『C语言』关于fopen函数的模式字符串

来源:互联网 发布:mac 应用程序开发 编辑:程序博客网 时间:2024/06/04 17:59

  在C语言中,通常使用fopen()打开一个文件,此函数在stdio.h中声明。

  它有两个参数,第一个为要打开的文件名(一个字符串),它实际上代表了包含该字符串的地址;第二个参数用于指定文件的打开模式,如下:

“r”:以只读模式打开一个文本文件,此文件必须存在。“w”:以只写模式打开一个文本文件,并将文件长度截为0,若文件不存在,则创建之。“a”:以只写模式打开一个文本文件,可从文件尾依次追加内容,若文件不存在,则创建之。“r+”:以读写模式打开一个文本文件,从文件头开始依次覆盖内容,此文件必须存在。“w+”:以读写模式打开一个文本文件,并将文件长度截为0,若文件不存在,则创建之。“a+”:以读写模式打开一个文本文件,可从文件尾依次追加内容,若文件不存在,则创建之。

  这里要特别注意:

   r和r+只能打开一个已存在的文件,它们之间的区别在于前者只能读,而后者还可以写。
  对于一个已存在的文件来说,r+和w+的区别在于,前者是从文件头开始依次覆盖内容,而后者是先清空文件内容,再从头开始写入内容。
   w和w+、a和a+的区别在于前者只能写,而后者还可以读。
  若是追加模式,则相当于打开文件后的“光标”位置在文件末尾,此时若想实现诸如计算文件字符数量的功能,则需要把“光标”移至文件开头。

  简单地来说就是,不带“+”号的只有读或写其中一项功能,带“+”号的两项都有,其中的区别就是写入的方式不一样而已。r+是覆盖写入,w和w+是清空后写入,a和a+是追加写入。以什么模式打开文件,那打开文件后的“光标”位置就在哪。对于能够写入的模式来说,它都能打开一个不存在的文件(即创建它)。

  若是在写入模式后添加“b”,例如“rb”、“wb”、“a+b”等,则是以二进制模式打开文件,模式字符的顺序不重要,如“a+b”和“ab+”是等同的。

  对于*NIX(如Unix、Linux、MacOS)类型系统来说,因为它的文件系统通常只有二进制一种,所以带不带“b”模式字符不重要,但为了更好的可移植性,建议还是完整的添加相应的模式字符。

0 0
原创粉丝点击