从流中读取和写入的某些操作可能会在流中设置错误标志,可以使用 进行测试ferror(stream)
,虽然我很确定这一定是一个常见问题,但我无法找到所有可能的列表SO或一般网络中的错误原因。什么可能导致 ferror() 被设置?
特别是,我正在寻找在 Minix 3 上对标准输入执行 fgets() 时可能导致错误的原因,但我也在寻找更通用的列表。
没有任何可能的错误的简单列表。但是,根据您正在读取或写入的设备,问题可能包括:
流上可能导致设置 ferror() 的错误条件是什么?
几种可能性之一: 尝试错误方向的 I/O 操作会设置错误指示器。
#include <stdio.h>
int main(void) {
FILE *f = fopen("t", "w");
if (f) {
int ch = fgetc(f);
printf("ch %d\n", ch);
printf("Error %d\n", ferror(f));
printf("EOF %d\n", feof(f));
fclose(f);
}
}
输出
ch -1
Error 1
EOF 0