【发布时间】:2014-01-11 17:48:16
【问题描述】:
我正在做一个项目,我必须创建一个 Black Jack 模拟。所以我开始创建一个deck和一个draw函数。由于 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;
}
【问题讨论】: