我有一个包含程序事件流的保存文件。程序可以读取文件并执行事件以恢复先前的状态(例如在程序调用之间)。之后,任何新事件都将附加到此文件中。
我可以以读写方式(fopen rw)打开文件一次,而不暴露使用模式。
但我想知道首先以只读方式打开它(fopen r)然后以附加方式重新打开它(freopen a)是否有任何好处。会不会有明显的区别?
不,以只读方式打开文件然后以追加模式重新打开没有具体的好处。如果您在程序执行期间需要更改文件,则最好以按模式打开它。
在您的情况下,可能没有任何特定的好处,但 freopen 的主要用途是更改与标准文本流(stdin、stdout、stderr)关联的文件。如果在普通文件上使用 if,它可能会影响代码的可读性。在您的情况下,您首先以只读模式打开,但如果您将流作为输出打开,我们需要记住一些关于 freopen 的事情。
在 GNU 手册中使用 fclose 阅读 freopen 和可能的错误情况:https ://www.gnu.org/software/libc/manual/html_node/Opening-Streams.html#Opening-Streams