我在我的程序中使用 scanf() 函数来扫描一个整数。我这样做的方式是:
while (!feof (stdin))
if (scanf("%d", &height) != 1) { puts("Wrong input!"); return 1; }
问题是,在实际执行 EOF 之后,由于 scanf 不返回 1,我得到了错误的输入并返回 1。我应该如何解决这个问题?
最佳答案
这种方法存在很多问题。 (EOF 直到尝试阅读后才激活,像“A”这样的文本输入会创建无限循环等)而是:
char buf[100];
while (fgets(buf, sizeof buf, stdin) != NULL) {
if (sscanf(buf, "%d", &height) != 1) {
puts("Wrong input!");
return 1;
}
do_something(height);
}
return 0;
关于C - 读取 scanf 直到 feof(stdin),不输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034876/