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 */
}
答案 0 :(得分:1)
scanf_s
返回变量参数列表中已成功填充数据的变量数。
在你的情况下,你希望它为1。
如果您确实遇到无效输入,则清除是您的工作,否则它将保留在输入流中。有关详情,请参阅How to clear input buffer in C?