gpt4 book ai didi

c - c 中的 fclose 函数,如果您为文件处理程序调用 fclose,为什么 fread() 有效但 fwrite() 无效

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:06 26 4
gpt4 key购买 nike

为什么如果我们使用 fread() 读取文件并且不包含 fclose 来关闭相同的相同文件引用但它仍然有效。

但是,如果我们忘记在 fwrite 之后包含 fclose,那么它就不起作用。即没有写入文件反射(reflect)。

最佳答案

fread(),顾名思义,就是从文件中读取数据。从逻辑上讲,它在实际读取数据(将其存储在您提供的缓冲区中)或报告错误之前无法返回。 fread() 返回后,您就可以使用数据了。

另一方面,

fwrite() 可以在 C 运行时库、操作系统和其他地方经过多层缓冲。 fwrite() 在处理您的数据并将其写入...某处 时返回。在您刷新它 (fflush(outfile);) 或关闭它 (fclose(outfile);) 之前,无法保证它确实写入了物理文件。一旦 fwrite() 返回,您就可以对传递给它的数据做任何您喜欢的事情(它已被复制),但这就是您所能假设的。

如果您的程序正常终止,它将隐式关闭(并因此刷新)所有打开的输出文件。如果您的程序异常终止,这可能不会发生。

(实际上,我认为在某些情况下,即使在 fclose()fflush() 之后,数据也可能不会实际到达文件中。)

关于c - c 中的 fclose 函数,如果您为文件处理程序调用 fclose,为什么 fread() 有效但 fwrite() 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com