有多少种方法可以强制`fread`或`fwrite`返回错误代码?

时间:2017-08-07 17:41:38

标签: c error-handling posix stdio

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*的东西都是合理的游戏。

0 个答案:

没有答案