【发布时间】:2013-05-11 19:44:43
【问题描述】:
我正在写一些从标准输入读取的 C99 代码:
// [...]
fgets(buf, sizeof(buf), stdin);
// [...]
但我想知道在这种情况下是否应该捕获错误,因为 shell 可以将 stdin 重定向到任何可能不如普通 stdin 健壮的东西。但这也意味着,stdin、stdout 和 stderr 上的每次访问都必须检查错误,而我很少看到在 printf 和 co 之后的任何检查。
那么,是否建议检查每个流访问是否有错误?
上面的例子会是这样的:
// [...]
if (!fgets(buf, sizeof(buf), stdin) && ferror(stdin)) {
exit(EXIT_FAILURE);
}
// [...]
提前致谢!
【问题讨论】:
标签: c stream stdout stdin stderr