文件类型
- 文本文件(ASCII)
- 简单的文本文件,可用任何文字处理程序阅读
- 二进制文件
- 包含 在ASCII及扩展ASCII字符中编写的数据或程序指令 的文件,通常图形文件及文字处理程序等计算机程序都属于二进制文件
文件访问模式
- 文本文件
- “r”
- 打开一个已有的文本文件,允许读取文件
- “w”
- 打开一个文本文件,允许写入文件。若文件不存在,则创建一个新的文件
- “a”
- 打开一个文本文件,以追加模式写入文件。若文件不存在,则创建一个新的文件
- “r+”
- 打开一个文本文件,允许读写文件
- “w+”
- 打开一个文本文件,允许读写文件,文件会被截断为0长度。若文件不存在,则创建一个新的文件
- “a+”
- 打开一个文本文件,允许读写文件。从头读取,追加写入。若文件不存在,则创建一个新的文件
- “r”
- 二进制文件(对应于文本文件访问模式)
- “rb” ~> “r”
- “wb” ~> “w”
- “ab” ~> “a”
- “rb+” ~> “r+”
- “r+b” ~> “r+”
- “wb+” ~> “w+”
- “w+b” ~> “w+”
- “ab+” ~> “a+”
- “a+b” ~> “a+”
文件操作流程
-
打开文件
// filename:文件路径名 mode:文件访问模式
FILE *fopen(const char * filename, const char * mode) -
操作文件
-
读取文件
// 读取一个字符
int fgetc(FILE *fp)
// 读取 n-1 个字符(字符串后面有一个字符串结束标志,buf的长度为n)
char *fgets(char *buf, int n, FILE *fp)
// 在文件结束之前遇到空格,换行符,会提前终止
int fscanf(FILE *fp, const char format) -
写入文件
// 写入一个字符
int fputc(int c, FILE *fp)
// 写入一个字符串
int fputs(const char *s, FILE *fp)
-
-
关闭文件
写入文件的内容,只有在调用fclose(FILE *fp)后,才会被写入到磁盘文件中
-
在关闭文件前,读取磁盘文件,无法读取文件的最新内容(写入但未保存的内容)
int fclose( FILE *fp )
示例
-
文件的简单操作
void fileOperation() {
// 打开文件, 若不存在,则会目录/Users/mac/Desktop/下创建一个文件file.text,访问模式为:读写
FILE *fwp = fopen("/Users/mac/Desktop/spring.txt", "r+");
// 写入 “春已暖,花已开,什么时候去看海” 到文件中
fputs("春已暖,花已开,什么时候去看海", fwp);
// 关闭文件,此处可以调试写入的内容是何时保存到磁盘文件的
fclose(fwp);
// 读取文件
FILE *frp = fopen("/Users/mac/Desktop/spring.txt", "r+");
char buffer[255];
fscanf(frp, "%s", buffer);
printf("文件的内容为:\n%s\n", buffer);
// 关闭文件
fclose(frp);
}