Scanf在C中每隔一個(gè)時(shí)間循環(huán)跳過一次。我正在嘗試開發(fā)一個(gè)簡單的基于文本的掛人游戲,主游戲循環(huán)從提示開始,在每個(gè)字母上輸入一個(gè)猜測,然后繼續(xù)檢查字母是否在單詞中,如果不是,就會(huì)停止使用。然而,當(dāng)我運(yùn)行這個(gè)游戲時(shí),每次都會(huì)出現(xiàn)兩次提示,程序不會(huì)等待用戶的輸入。它也會(huì)帶走生命(一次生命如果它是正確的輸入,兩次生命如果不是),所以它所接受的不是以前的輸入。這是我的游戲循環(huán),簡化了一點(diǎn):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;
}
}}我想問題是,如果它還沒有接收到什么東西的話,它就會(huì)被吸收,但是我不知道為什么。有人知道嗎?我在MacOSX10.5上使用GCC 4.0.1。
3 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
紐琳。
怎么修?
"%.1s"
char ibuff[2];while ((scanf("%.1s", ibuff) == 1){ ...}

慕蓋茨4494581
TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
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 關(guān)注
- 587 瀏覽
添加回答
舉報(bào)
0/150
提交
取消