标签存档: fopen

c语言文件打开模式

可以使用的模式字符串
“r”
打开文件用于读取,如果文件不存在则返回错误。
“w”
打开文件用于写入,如果文件已经存在,则删除原文件。
“a”
打开文件用于写入文件结尾(附加),在数据没有写入之前不移除EOF,如果文件不存在则创建。
“r+”
打开文件用于读取和写入(文件必须存在)。
“w+”
打开新文件用于读取和写入,如果文件已经存在,则删除源文件。
“a+”
打开文件用于读取和附加,附加操作会在数据写入之前将 EOF 移除,在数据写入之后重新加入 EOF ,如果文件不存在则创建。
注:当使用 “a” 或者 “a+” 模式打开文件时,所有的写入操作都在文件的结尾进行,可以使用 fseek 和 rewind 对文件指针进行重定位,但是写入操作会将文件指针重新移至文件结尾,因此,已经存在的数据不会被覆盖。

当使用 “r+” 、”w+” 、”a+” 模式打开文件时,文件可以读写(也就是文件可以更新),需要注意的是,如果在读写之间进行切换时它们必须介于 fflush, fsetpos , fseek 或是 rewind 之间,如果需要,可以使用 fseek 或者是 fsetpos 来改变当前位置。

附加模式
添加在上面的模式之后
t
以文本模式打开(转换过),在这个模式的输入中,将CRTL+Z 视为 EOF。
b
以二进制模式打开(未转换),回车符和换行符将被忽略。
注:如果 t 或者 b 没有指定,将使用全局变量 _fmode , 如果它们作为模式的前缀,函数调用失败且返回NULL。
c
为关联的文件开启 commit 标识,当 fflush 或者 _flushall 被调用时,数据将直接写入文件。
n
将关联的文件的 commit 标识设为 “no-commit,n为默认值,如果在链接了 COMMODE.OBJ 相应的设置将被覆盖
。如果没有链接 COMMODE.OBJ 全局的默认值为 “no-commit” 。
N
指定文件不被子进程继承。
S
指定文件缓存优化,不强制,顺序方式读取文件。
R
指定文件缓存优化,不强制,随机方式读取文件。
T
指定文件为临时文件,如果可能,将不会写入磁盘。
D
指定文件为临时文件,如果对应的文件指针全部关闭,文件将被删除。

从MSDN  ms-help://MS.MSDNQTR.v90.chs/dv_vccrt/html/c534857e-39ee-4a3f-bd26-dfe551ac96c3.htm 翻译和摘抄。