FILE *fp = fopen(log_name, "a");
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。
打开模式 | 简述 | 若欲操作的 文件不存在 | 成功打开文件后 文件指针位置 | 是否清空 原有内容 | 读取位置 | 写入位置 | 注 |
r | 只读 | 打开失败 | 开头 | 否 | 任意位置读取 | 不可写入 | - |
w | 只写 | 新建 | 开头 | 是 | 不可读取 | 任意位置写入 | 写入时会覆盖原有位置内容 |
a | 新建 | 结尾 | 否 | 不可读取 | 只能尾部写入 | - | |
r+ | 读写 | 打开失败 | 开头 | 否 | 任意位置读取 | 任意位置写入 | 写入时会覆盖原有位置内容 |
w+ | 新建 | 开头 | 是 | 任意位置读取 | 任意位置写入 | 写入时会覆盖原有位置内容 | |
a+ | 新建 | 结尾 | 否 | 任意位置读取 | 只能尾部写入 | - |
打开模式 | 只可以读 | 只可以写 | 读写兼备 | |||
文本模式 | r | w | a | r+ | w+ | a+ |
二进制模式 | rb | wb | ab | rb+ (r+b) | wb+ (w+b) | ab+ (a+b) |