我正在进行一个tic-tac-toe最终项目.我要求用户打印他想要填写的箱号,然后我使用整数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);
}
Run Code Online (Sandbox Code Playgroud)
输入非整数时,输出为:
输入错误.
箱号:
在一个不停的循环中.该生产线,其中scanf函数,然后再要求用户输入一个值,就好像从来没有运行.
我不知道问题是什么.请帮忙.
第一次scanf()失败后,非整数仍保留在输入流中,并防止任何后续成功,同时保持永久.
您需要摆脱不可扫描的延迟输入.
请参阅这些文章以选择您喜欢的方法:
http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
如何在C中读取/解析输入?常见问题