C - 读取 scanf 直到 feof(stdin),不输出错误

标签 c return scanf eof

我在我的程序中使用 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/

相关文章:

c - 有关 C 函数原型(prototype)和编译的问题

c - 我对这个 C 程序如何工作的理解正确吗?

c++ - 在 MBCS 项目中使用 unicode dll,反之亦然

函数中的 PHP 异常 VS 返回用法(最佳实践)

c++ - 如何返回索引位置而不是值?

c - fscanf 是否将传递的文件指针向前移动?

c++ - 在 C MexFunction 中使用 Besselk 函数

SQL Server 性能结果集与输出参数与返回值

c - 简单的 C 程序在变量应该 scanf 后一致地将变量打印为 6356748

c - C语言任务提醒程序