所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。
1.文件的分类
文件从用户角度可分为普通文件和设备文件两种。按类型又可以分为字符文件和字节文件。
C语言操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。文件有多种读写方式有多种,对于文本文件可以一个字符一个字符地读取,也可以读取一整行。对于字节文件可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间某个位置读取(随机访问)。
2.C语言如何操作文件
C语言通过文件指针操作文件,文件指针定义方式如下:
FILE* 文件型指针变量名;
注意:由于外存的数据读/写速度相对较慢,所以无论文件的读写都是把数据暂时保存在缓冲区里面。
3.文件的打开和关闭
C语言中对文件进行操作必须打开文件,打开文件要使用到到fopen函数。 fopen函数的原型为:
FILE* fopen(const char *path,const char *mode)
其中path为文件路径,mode为打开方式 对于文件路径,只需注意若未明确给出绝对路径,则默认该文件在工程的目录下。若需给出绝对路径,则注意转义字符'\',比如有文件test.txt存放在C盘根目录下,则文件路径参数值应为C:\test.txt。
对于mode,主要由r,w,a,+,b,t六个字符组合而成。 r:只读方式,文件必须存在 w:只写方式,若文件存在,则原有内容会被清除;若文件不存在,则会建立文件 a:追加方式打开只写文件,只允许进行写操作,若文件存在,则添加的内容放在文件末尾;若不存在,则建立文件 +:可读可写 b:以二进制方式打开文件 t:以文本方式打开文件(默认方式下以文本方式打开文件)
下面是常见的组合: - r: 以只读的方式打开文件,只允许读,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部 - r+: 以可读可写的方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部 - rb+: 以可读可写、二进制方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部 - rt+: 以可读可写、文本方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部 - w: 以只写的方式打开文件,只允许写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部 - w+: 以读写的方式打开文件,允许读写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部 - a: 以追加、只写的方式打开文件,只允许写。若文件存在,则追加的内容添加在文件末尾,若文件不存在,则创建文件。打开成功后返回文件指针,位置指针指向文件头部(注意很多书上或资料上讲述追加方式打开成功后位置指针指向文件末尾是错误的) - a+: 以追加、可读写的方式打开文件,允许读写。若进行读操作,则从头开始读;若进行写操作,则将内容添加在末尾。若文件不存在,则创建文件。打开成功后返回文件指针,位置指针指向文件头部。
实例:
打开和关闭当前的源程序文件。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(){
FILE *fp;
if( (fp=fopen("e:\\test\\test.c","rt")) == NULL ){
puts("文件打开失败!");
exit(0);
}else{
puts("文件打开成功!");
}
Sleep(3000);
if(fclose(fp)==0){
puts("文件正常关闭!");
}else{
puts("文件关闭异常!");
}
return 0;
}
运行结果:
文件打开成功!
文件正常关闭!