为什么我们使用fread()读取文件并且不包含fclose来关闭相同的文件引用但仍然有效.
但是如果我们忘了在fwrite之后包含fclose那么它就不起作用了.没有写入文件反映出来.
fread()顾名思义,它从文件中读取数据.从逻辑上讲,它不能返回,直到它实际读取数据(存储在您提供的缓冲区中)或报告错误.只要fread()回报,你可以使用这些数据.
fwrite()另一方面,可以在C运行时库,OS和其他地方进行多层缓冲.fwrite()在处理数据并将其写入某处时返回.在您刷新它(fflush(outfile);)或关闭它(fclose(outfile);)之前,无法保证它实际写入物理文件.只要fwrite()回报,你可以做你与你传递给它(它被复制)的数据一样,但仅此而已,你可以假设.
如果程序正常终止,它将隐式关闭(并因此刷新)所有打开的输出文件.如果您的程序异常终止,则可能不会发生这种情况.
(实际上,我认为在某些情况下,即使在fclose()或之后,数据也可能无法实际到达文件中fflush().)
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |