使用scanf的返回值验证输入不起作用

问题描述 投票:2回答:1

我正在进行一个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);
        } 

输入非整数时,输出为:

输入错误。 箱号:

在一个不停的循环中。然后再次调用scanf以供用户输入值的行就好像从不运行一样。 我不知道问题是什么。请帮忙。

c scanf
1个回答
6
投票

在第一个scanf()失败后,非整数保留在输入流中并阻止任何跟随成功,同时保持永久。

您需要摆脱不可扫描的延迟输入。

请参阅这些文章以选择您喜欢的方法: http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html How to read / parse input in C? The FAQ

© www.soinside.com 2019 - 2024. All rights reserved.