fwrite
的手册页说:
只有在发生写入错误时,函数
fwrite()
才会返回小于nitems
的值。
为了测试(和教育)目的,我想知道什么"写错误"在这种情况下意味着。
libexplain库似乎只提供了一个可能的"写入错误&#34 ;;即,
FILE *fp = fopen("foo.txt", "r"); // file is not opened for writing
int rc = fwrite("foo", 1, 3, fp);
assert(rc == 0 && errno == EBADF);
还有其他方法可以强制fwrite
失败吗?如果是这样,他们的症状是什么,我怎么能故意让他们发生?
同样问题fread
。在那种情况下"文件结束"和"文件没有打开阅读"是显而易见的,但我再次假设至少还有其他一些。
此问题适用于任何类型的FILE*
,不一定是磁盘文件。网络连接,无论你从BSD funopen
得到什么奇怪,以及任何看起来像FILE*
的东西都是合理的游戏。