字符串模式指定为文件请求的访问类型,如下所示:
“r”
打开以供读取。如果文件不存在或无法找到,则fopen调用失败。
“w”
打开一个空文件进行写入。如果给定文件存在,其内容将被销毁。
“a”
在文件结束时打开以进行写入(附加),在向文件写入新数据之前不删除EOF标记;如果文件不存在,则首先创建该文件。
“r +”
为读写打开。(文件必须存在。)
“w +”
打开一个空文件进行读写操作。如果给定的文件存在,它的内容将被销毁。
“+”
附加操作包括在将新数据写入文件之前删除EOF标记,在写入完成后恢复EOF标记;如果文件不存在,则首先创建文件。
当文件打开的“a”或“+”访问类型,所有的写操作都发生在文件的末尾。文件指针可以重新定位使用fseek或倒带,但总是搬回文件的末尾写入操作之前执行。因此,不能覆盖现有的数据。
“a”模式不移除EOF标记在附加文件。附加发生后,ms - dos命令只显示数据类型到原始EOF标记而不是任何数据添加到文件。“a +”模式并移除EOF标记添加之前附加文件。之后,ms - dos命令显示所有数据类型的文件。“a +”模式需要附加的流文件终止与CTRL + Z EOF标记。
当“r +”、“w +”,或“+”访问指定类型,阅读和写作都允许(文件是开放的“更新”)。然而,当你阅读和写作之间切换时,必须有一个干预。fflush, fsetpos, fseek,或回放操作。可以指定当前位置fsetpos或fseek操作,如果需要的话。
除了上述值外,下列字符可以包含在mode中,以指定换行字符的转换模式:
t
开放的文本(翻译)模式。在这种模式下,按CTRL + Z是解释为一个文件尾字符输入。在打开的文件的读/写“+”,fopen检查CTRL + Z结束时文件并删除它,如果可能的话。这样做是因为在一个文件中使用fseek和ftell CTRL + Z结尾,可能导致fseek行为不当在文件的末尾。
在文本模式下,马车return-linefeed组合是翻译成单一换行输入,和换行字符翻译马车return-linefeed组合输出。当一个Unicode stream-I / O函数在文本模式(默认),源或目标流被认为是一个序列的多字节字符。因此,Unicode两输入函数将多字节字符转换为宽字符(如果调用mbtowc函数),对sa因为Unicode流输出函数将宽字符转换为多字节字符(就像通过调用wctomb函数一样)。
b
以二进制(非翻译)模式打开;包含载波返回和换行字符的转换被禁止。
如果在模式中没有给出t或b,则默认的转换模式是由全局变量_fmode定义的。
有关在Unicode和多字节流-I/O中使用文本和二进制模式的详细信息,请参阅文本和二进制模式文件I/O和在文本和二进制模式中使用Unicode流I/O。
c
启用关联文件名的提交标志,以便在调用fflush或_flushall时将文件缓冲区的内容直接写入磁盘。
n
将相关文件名的提交标志重置为“no-commit”。这是默认值。如果你用com . obj链接你的程序,它也会覆盖全局提交标志。除非你显式地用com . obj链接你的程序,全局提交标志默认值是“no-commit”。
网友评论