(转载)
在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图:
打开模式 |
只可以读 |
只可以写 |
读写兼备 |
|||
文本模式 |
r |
w |
a |
r+ |
w+ |
a+ |
二进制模式 |
rb |
wb |
ab |
rb+ (r+b) |
wb+ (w+b) |
ab+ (a+b) |
其中,二进制模式与文本模式操作相似,只不过是以二进制流的形式读写而已,下面以文本模式为例分析:
1."r" 模式:
1.1 打开文件进行“只读”操作,即只能从文件读取内容。
1.2 若欲操作的文件不存在,则打开失败。
1.3 成功打开文件时,文件指针位于文件开头。
1.4 打开文件后,不会清空文件内原有内容。
1.5 可从文件中任意位置读取内容。
2."w" 模式:
2.1 打开文件进行“只写”操作,即只能向文件写入内容。
2.2 若欲操作的文件不存在,则新建文件。
2.3 成功打开文件时,文件指针位于文件开头。
2.4 打开文件后,会清空文件内原有的内容。
2.5 可向文件中任意位置写入内容,且进行写入操作时,会覆盖原有位置的内容。
3."a" 模式:
3.1 打开文件进行“追加”操作,即只能向文件写入内容。
3.2 若欲操作的文件不存在,则新建文件。
3.3 成功打开文件时,文件指针位于文件结尾。
3.4 打开文件后,不会清空文件内原有内容。
3.5 只能向文件末尾追加(写)内容。
4."r+"模式:
4.1 打开文件进行“读写”操作,即既可读取,又可写入。
4.2 若欲操作的文件不存在,则打开失败。
4.3 成功打开文件时,文件指针位于文件开头。
4.4 打开文件后,不会清空文件内原有内容。
4.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。
5."w+"模式:
5.1 打开文件进行“读写”操作,即既可读取,又可写入。
5.2 若欲操作的文件不存在,则新建文件。
5.3 成功打开文件时,文件指针位于文件开头。
5.4 打开文件后,会清空文件内原有的内容。
5.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。
6."a+"模式:
6.1 打开文件进行“读写”操作,即既可读取,又可写入。
6.2 若欲操作的文件不存在,则新建文件。
6.3 成功打开文件时,文件指针位于文件结尾。
6.4 打开文件后,不会清空文件内原有内容。
6.5 读取内容时,可以在任意位置进行,但写入内容时,只会追加在文件尾部。
附表格加强记忆:
打开模式 |
简述 |
若欲操作的 文件不存在 |
成功打开文件后 文件指针位置 |
是否清空 原有内容 |
读取位置 |
写入位置 |
注 |
r |
只读 |
打开失败 |
开头 |
否 |
任意位置读取 |
不可写入 |
- |
w |
只写 |
新建 |
开头 |
是 |
不可读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
a |
新建 |
结尾 |
否 |
不可读取 |
只能尾部写入 |
- |
|
r+ |
读写 |
打开失败 |
开头 |
否 |
任意位置读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
w+ |
新建 |
开头 |
是 |
任意位置读取 |
任意位置写入 |
写入时会覆盖原有位置内容 |
|
a+ |
新建 |
结尾 |
否 |
任意位置读取 |
只能尾部写入 |
- |
不同的打开模式对应不同的操作方式,使用时需仔细规划。