我正在做一個項目,我必須創建一個Black Jack模擬。所以我開始創建一個套牌和一個繪圖函數。由於C中沒有字符串,因此我創建了兩個指針數組,將它們用作自定義字符串數組。問題是,當我打印卡片來查看其價值和適合度時,只有第一次打印出預期的內容。第二次是一團糟。誰可以給我解釋一下這個 ?這裏是我的代碼C無法打印兩次字符串
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char* suit[] = {"Diamonds", "Hearts", "Spades", "Clubs"};
char* facevalue[] = { "Seven", "Eight", "Nine", "Ten", "Jack","Queen", "King", "Ace"};
char* drawCard()
{
char* card[50];
int cardNumber=rand()%8;
int cardColor=rand()%4;
strcpy(card,facevalue[cardNumber]);
char of[]=" of ";
char* xrwma =suit[cardColor];
strncat(card,of,5);
strncat(card,xrwma,8);
return card;
}
int main()
{
srand(time(NULL));
char* c=drawCard();
puts(c);
puts(c);
return 0;
}
Thx隊友,它的工作 –
另外,哪種解決方案更受歡迎?傳遞一個指向'drawCard()'或使用f.e'malloc'的指針?爲了有一個更清潔的代碼。 Thx –