我正在尝试读取3个字符串(3行),其中甲板上的玩家1的第一行卡,玩家2的第二行卡,第三玩家的第三行卡。问题在于,C仅读取前两行,而跳过读取卡片组。
`
char firstPlayerCards [5];
char secondPlayerCards [5];
char deck [14];
fgets(firstPlayerCards, sizeof(firstPlayerCards),stdin);
fgets(secondPlayerCards, sizeof(secondPlayerCards),stdin);
fgets(deck, sizeof(deck),stdin);
printf("%s",firstPlayerCards);
printf("%s",secondPlayerCards);
printf("%s",deck);`
输入就像:
5h 5d
7h As
2h 8d 4h Jh Ah
最佳答案
您需要更大的数组。
每个玩家的手是5个字符,应存储在5个字节中
再加上一个字节来保存一个空终止符。
因此,每个数组中至少需要6个字节才能握住指针。fgets
像这样调用时只会读取4个字节fgets(firstPlayerCards, 5, stdin)
为了避免在写入空字符时出现未定义的行为。
因此,您没有阅读预期的输入。