使用scanf_s只采用整数时如何进行错误检查?

时间:2018-03-04 20:01:46

标签: c scanf

EDIT1: 对不起,我正在编程课程的介绍......我读了两个链接,但不完全理解它们......

我试图添加

    if (scanf_s("%d", &input) == 0) {
        fflush(stdin);
        continue;
    }

但这似乎没有做任何事情。我知道scanf处于错误状态,因此它将拒绝运行,并且我需要清除用户输入错误的缓冲区。

所以基本上,我正在寻找一个初学者的解决方案,对于那些刚刚学习了循环,输入/输出和基本错误检查的人来说。

~~~~~~~~~

我是C的新手并且有一个小问题。我想从控制台读取整数列表。如果用户确实输入了整数,它可以正常工作,但是如果它输入类似" acdb"或" 0.5"的内容,我只需要打印程序"输入一个数字:"无限地,好像它正在运行循环但是scanf_s被破坏了,所以它只是跳过它自己。

感谢您的帮助。

int input = 1;  
while (input != 0) {
        printf("enter a number: \n");
        scanf_s("%d", &input);

/* rest of code omitted */

}

1 个答案:

答案 0 :(得分:1)

scanf_s返回变量参数列表中已成功填充数据的变量数。

在你的情况下,你希望它为1。

如果您确实遇到无效输入,则清除是您的工作,否则它将保留在输入流中。有关详情,请参阅How to clear input buffer in C?