gpt4 book ai didi

c - 我的数组的第一个字符没有打印出来

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:19 24 4
gpt4 key购买 nike

我想编写 Hangman 游戏,但在比较字符串等之前。我只是想自动滚动数组以查看它是否有效 - 它没有,好吧,不像我想象的那样。

除了第一个字符之外的所有内容都会被打印出来,但为什么呢?

int gameWon = 0;
char secretWord[7][1] = {{"H"},{"A"},{"N"},{"G"},{"M"},{"A"},{"N"}};
char guessedChar;

while(gameWon != 1)
{
printf("Guess a single letter: ");
scanf("%s", &guessedChar);

for(int i = 0; i < 7; i++)
{
printf("%c\n", secretWord[i][0]);
}
}

最佳答案

您对 scanf 使用了错误的格式说明符:

scanf("%s", &guessedChar);

%s 格式说明符需要一个 char *,它指向 char 数组的第一个元素,并放置一个空终止字符串那个位置。您传入的是单个 char 的地址。这导致 scanf 写入 guessedChar 的内存位置,调用 undefined behavior .在这种情况下,它表现为附近的变量被覆盖,特别是数组 secretWord 的第一个元素。

改为使用 %c,这是为了读取单个字符。此外,请务必在格式字符串中在它之前放置一个空格,以吸收输入缓冲区中留下的任何空白字符:

scanf(" %c", &guessedChar);

关于c - 我的数组的第一个字符没有打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54837844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com