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;
}
}
}
我猜测问题出在scanf认为已经输入了内容,但实际上并没有输入。但我不知道原因。有人知道吗?我在Mac OS X 10.5上使用gcc 4.0.1。
getagin: printf("Please enter a number:\n"); isnumber = scanf("%*c%i", &number); // "%*c%i"将吃掉当前输入字符附加的换行符,并解决问题。但不是"%i%*c" if(isnumber) { printf("You enterd a number and it was %i\n", number); } else { printf("You did not eneter a number.\n"); goto getagin; }
- ilgaar'\n'
而不是其他东西,那么请使用"%*1[\n]"
而不是"%*c"
。 - chux - Reinstate Monica