我正在进行一个井字游戏最终项目。我要求用户打印他要填写的箱号,然后我使用整数 err 来获取 scanf 的返回值。在这种情况下,Scanf应该返回它已经读取的整数的数量,并且我要求读取一个整数,所以只要err!= 1,它就应该进入while循环。但是,这不起作用。
printf("\nBox number: ");
int boxNumber, err;
err = scanf("%d", &boxNumber);
while (err != 1) {
printf("\nWrong input.");
printf("\nBox number: ");
err = scanf("%d", &boxNumber);
}
输入非整数时,输出为:
输入错误。
箱号:
在不停循环中。然后再次调用 scanf 的行,以便用户输入值,就好像从不运行一样。
我不知道问题是什么。请帮忙。
答案 0 :(得分:6)
在第一个scanf()
失败后,非整数仍保留在输入流中,并阻止任何后续成功,同时保持永久。
您需要摆脱不可扫描的延迟输入。
请参阅这些文章以选择您喜欢的方法:
http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
How to read / parse input in C? The FAQ