1. C语言的文件操作
1.1. 打开文件
打开文件应使用fopen
函数:
FILE *fopen( const char * filename, const char * mode );
第一个参数是文件名,第二个参数是读写方式,常用的读写方式见下表。
模式 | 描述 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入。若文件不存在,则创建一个新文件。若文件存在,则会被截断为0长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则创建新文件。在这里,文件内容会被追加。 |
r+ | 打开一个文本文件,允许读写。 |
w+ | 打开一个文本文件,允许读写。如果文件已存在,会被截断为0长度。若不存在,会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写。如果文件不存在,则创建新文件。写入是追加模式。 |
1.2. 关闭文件
关闭文件应使用fclose()
函数:
int fclose( FILE *fp );
1.2.1. 打开并关闭文件的例子:
FILE *fp = NULL;
char* filename = "/temp/test.txt";
fp = fopen(filename, "w+");
// 对文件进行操作
fclose(fp);
1.3. 写入文件
下面是把字符写入到流中的最简单的函数:
int fputc(int c, FILE *fp);
1.4. 读取文件
下面是从文件读取单个字符的最简单的函数:
int fgetc(FILE * fp);
也可以使用fscanf
函数:
int fscanf(FILE * stream, const char * format, [argument...])
其功能是从文件stream
中根据format
格式读取数据,存入到argument
中。
需要注意的是,fscanf
函数在遇到空格以及换行符时结束。遇到异常情况时,fscanf
返回0。
1.5. 读写文件的例题
试编写一个程序,显示指定文本文件的内容,要求每行显示的字符数不超过30个字符。
#include <stdio.h>
int main() {
FILE* fp;
char argument;
int count = 0;
char* filename = "res.txt";
fp = fopen(filename, "r+");
if (!fp) {
printf("the file is empty, cannot open it.");
}
while (fscanf(fp, "%c", &argument)) {
count++;
printf("%c", argument);
if (argument == '\n') {
count = 0;
continue;
}
if (count % 30 == 0) {
printf("\n");
count = 0;
}
}
fclose(fp);
return 0;
}