关于不同文件模式的困惑

时间:2013-05-01 10:55:52

标签: c file-io

如果我打开(比方说)二进制文件,并且我想追加它的结尾,以下两种方式似乎对我有效

fileVar = fopen("FileName", "w+b");

fileVar = fopen("FileName", "r+b");

我已阅读文档,但我不清楚这两种打开文件的方法之间的区别。 This网站表示w+将覆盖文件(如果该文件尚不存在),a+将附加到文件的末尾。我没有尝试使用a+,但它似乎与r+做同样的事情。

问题:打开文件的三种方式r+w+a+之间究竟有什么区别?

2 个答案:

答案 0 :(得分:5)

r + 从文件开头开始,但如果文件不存在则不会创建新文件。

如果文件存在,

w + 会将现有文件截断为零长度,否则会创建一个新文件。

如果文件存在,

a + 从文件末尾开始,否则会创建一个新文件。

访问模式r +,w +和a +以读写模式打开文件,但有以上区别:

r +和w +我们都可以读取,写入文件但是r +不会截断(删除)文件的内容,如果这样的文件没有退出而没有创建新文件,而在w +截断内容文件以及如果此文件不存在则创建新文件。

答案 1 :(得分:0)

就像网站上说的那样:

  • r+会打开文件进行阅读&写作,但文件必须存在。
  • w+会打开文件进行阅读&写,但如果文件存在,它将截断文件(删除其内容)。
  • a+会打开文件进行阅读&写作,但在任何地点允许阅读时,你只能写到文件的末尾,即追加。