Scanf在C中每隔一个时间循环跳过一次。我正在尝试开发一个简单的基于文本的挂人游戏,主游戏循环从提示开始,在每个字母上输入一个猜测,然后继续检查字母是否在单词中,如果不是,就会停止使用。然而,当我运行这个游戏时,每次都会出现两次提示,程序不会等待用户的输入。它也会带走生命(一次生命如果它是正确的输入,两次生命如果不是),所以它所接受的不是以前的输入。这是我的游戏循环,简化了一点:while (!finished){
printf("Guess the word '%s'\n",covered);
scanf("%c", ¤tGuess);
i=0;
while (i<=wordLength)
{
if (i == wordLength)
{
--numLives;
printf("Number of lives: %i\n", numLives);
break;
} else if (currentGuess == secretWord[i]) {
covered[i] = secretWord[i];
secretWord[i] = '*';
break;
}
++i;
}
j=0;
while (j<=wordLength)
{
if (j == (wordLength)) {
finished = 1;
printf("Congratulations! You guessed the word!\n");
break;
} else {
if (covered[j] == '-') {
break;
}
}
++j;
if (numLives == 0) {
finished = 1;
}
}}我想问题是,如果它还没有接收到什么东西的话,它就会被吸收,但是我不知道为什么。有人知道吗?我在MacOSX10.5上使用GCC 4.0.1。
3 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
纽琳。
怎么修?
"%.1s"
char ibuff[2];while ((scanf("%.1s", ibuff) == 1){ ...}
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
int main(void) { char val; while (1) { printf("enter val: "); scanf("%c", &val); printf("got: %d\n", val); }}
enter val: g got: 103enter val: got: 10
scanf
scanf
scanf
enter val: ^[got: 27enter val: got: 10
- 3 回答
- 0 关注
- 570 浏览
添加回答
举报
0/150
提交
取消