我正在写一些从标准输入读取的 C99 代码:
// [...]
fgets(buf, sizeof(buf), stdin);
// [...]
但是我想知道在这种情况下是否应该捕获错误,因为 shell 可以重定向stdin
到任何可能不如 plain 健壮的东西stdin
。但这也意味着,每次访问stdin
,stdout
和stderr
都必须检查错误,而且我很少看到printf
和 co 之后的任何检查。
那么,是否建议检查每个流访问是否有错误?
上面的示例将类似于:
// [...]
if (!fgets(buf, sizeof(buf), stdin) && ferror(stdin)) {
exit(EXIT_FAILURE);
}
// [...]
提前致谢!