我有一个while循环,它打印一个整数提示。我想在用户输入字符时进行错误检查,例如' a'。但是,当我输入' a'时,它会打印"输入种子:种子必须是整数值,请再试一次"永远。
int getSeed() {
int scanned, seed;
while (scanned == 0) {
printf("Enter the seed: ");
scanned = scanf("%d", &seed);
if (scanned == 0) {
printf("Seed must be an integer, try again\n");
}
}
return seed;
}
如何打印
Enter the seed: a
Seed must be an integer, try again
Enter the seed:
感谢。
编辑:解决了,我添加了getchar();在scanf之后。
答案 0 :(得分:0)
scanf
检查输入字符,发现它与转换说明符不匹配,因此将其放回输入流中。
然后,在代码中while
循环再次到达scanf
,上面的过程再次发生(因为您在输入流中写入的a
仍然存在)
因此,更好的解决方案是将其作为字符(或字符串)读取,然后将其转换为整数。