fopen函数中a和a +选项有什么区别?

dom*_*lao 3 c c++

我无法理解C fopen api文档中"a"和"a +"选项的描述."a +"中的选项是追加和更新.这里更新一词是什么意思?

suk*_*vir 10

这是man page(man fopen)所说的:

一个

打开附加(在文件末尾写).如果文件不存在,则创建该文件.流位于文件的末尾.

A +

打开阅读和追加(在文件末尾写).如果文件不存在,则创建该文件.用于读取的初始文件位置位于文件的开头,但输出始终附加到文件的末尾.


意思是:

对于a +: 指针最初位于文件的开头(用于读取),但是当尝试写入操作时,它会移动到文件的末尾.

  • 不要全神贯注 - 不是所有的手册都是一样的.我说:'开放写作.如果文件不存在,则创建该文件.流位于文件的末尾.对文件的后续写入将始终以当前文件末尾结束,无论是否有任何介入的fseek(3)或类似文件,以及"a + Open for reading and writing".如果文件不存在,则创建该文件.流位于文件的末尾.对文件的后续写入将始终以当前文件末尾结束,无论是否有任何介入的fseek(3)或类似内容. (2认同)

Cle*_*ral 6

是的,有一个重要的区别:

a : 在文件中追加数据,可以在文件末尾写入一些数据来更新文件;

a+:在文件中追加数据并更新它,这意味着它可以在最后写入,也可以读取文件。

在只写日志的实际情况下,两者都是合适的,但如果您还需要读取文件中的某些内容(以追加模式使用已打开的文件),则需要使用“ a+ ”。