问题:当用户输入'q'时,将再次出现提示(Number:)(这是预期的)。但是,当用户输入“ q q”时,提示将出现两次,即(Number:Number:)。并且当用户输入“ q q q”时,提示将出现3次,即(Number:Number:Number:)。反正有修复此代码?我是编程新手,所以如果您尝试用外行的方式解释问题,我将不胜感激。
int main(void)
{
char number[17];
while (true)
{
printf("Number: ");
scanf("%s", number);
int i;
char c;
if (sscanf(number, "%i %c", &i, &c) == 1)
{
printf("%i\n", i);
return 0;
}
}
}
我已经按照你们所说的编辑了代码,并且可以正常工作。有人可以向我解释为什么这行得通吗?
int main(void)
{
char number[17];
while (true)
{
printf("Number: ");
fgets(number, 17, stdin);
int i;
char c;
if (sscanf(number, "%i %c", &i, &c) == 1)
{
printf("%i\n", i);
return 0;
}
}
}
另一种解决方法是调用fflush(stdin)
清除输入缓冲区。
if (sscanf(number, "%i %c", &i, &c) == 1)
{
printf("%i\n", i);
return 0;
}
else fflush(stdin);