我正在尝试读取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)
为了避免在写入空字符时出现未定义的行为。
因此,您没有阅读预期的输入。

08-17 08:50