当我使用fread(C语言)从文件中读取时,fread的返回值有时会为0.
如手册所示:
fread()和fwrite()返回成功读取或写入的项目数
我必须写这样的代码吗?
int bytes_read;
while((bytes_read = fread(buffer, sizeof(int), 1, fp)) == 0) {
}
Run Code Online (Sandbox Code Playgroud)
我们总是要检查fread或fwrite是否成功?
R..*_*R.. 15
不,如果fread或者fwrite返回的数量少于读取或写入的预期记录数,则执行此类重试循环是没有意义的.也就是说,stdio不像低级别read和write操作可能导致"短"读或写.
如果fread返回的数量少于请求的记录数,则表明您已经达到了EOF或严重的读取错误.您可以通过检查feof()和区分它们ferror().
同样,如果fwrite返回的次数少于请求的记录数,则表示磁盘空间不足或出现严重的写入错误.
在任何情况下,由于缓冲stdio使得基本上不可能知道成功写入了多少,因此如果遇到写入错误,通常需要考虑文件丢失并中止整个操作.
| 归档时间: |
|
| 查看次数: |
15343 次 |
| 最近记录: |