1,概论
程序运行时,程序本身和数据一般都存放在内存中,程序运行结束后,存放在内存中的数据会被释放,如果长期保存程序运行所需的原始数据,或程序产生的结果数据,就必须以文件的形式存储到外部存储介质上.
2,C语言文件概述
1,文件与文件名 文件是指存放在外部存储介质上的数据集合.为标识一个文件,需要给每个文件定一个文件名,文件名一般格式,主文件名.[扩展名] 2,文件分类 可以从不同的角度对文件进行分类, 根据文件内容,可分为程序文件与数据文件, 程序文件又可以分为源文件,目标文件,可执行文件. 3,根据文件的存储形式:分为ascii和二进制文件. ascii码文件的每一个字节存储一个字符,便于对对字符进行处理,一般占用存储空间较多,而且需花费转换时间[ascii与二进制间互为转换] 二进制文件,是把内存中的数据,原样输出到磁盘文件中,可以节省磁盘存储空间和ascii和二进制间互为转换时间.二进制文件中一个字节并对应一个字符,不能直接输出字符形式,不便于维护阅读.
3,文件读写,
读文件是指,将磁盘文件中的数据传送到内存的操作.
写文件是指,将计算机内存中的数据向磁盘文件中传.
构成文件的基本单元与流式文件
C语言将文件看作是由一个个字符[ascii码文件],或字节组成的,将这种文件称作流式文件,
在高级语言中组成文件的基本单位是记录,对文件操作的基本单位也是记录.
4,文件类型
每个被使用的文件都在内存中开辟一个区 用来存放文件的相关信息,(文件名,状态,位置),这些信息保存在一个结构体类型变量中,FILE,结构体类型由系统定义; typedef struct { int _fd; //文件描述符 int _cleft; //缓冲区中剩下的字符 int _mode; //文件操作 char *_nexttc; //下一个字符位置 char *_buff; //文件缓冲区位置 } FILE;
5,文件操作类型,结构体类型
定义FILE类型指针变量 FILE指针类型变量定义 FILE *指针变量名; eg:FILE *fp; fp是一个指向FILE结构体的指针变量; 可以使fp指向某个文件的结构体变量,从而通过该结构体变量中的文件信息来访问文件.
6,文件打开函数
fopen(),调用方式 FILE *fp; fp=fopen(文件名,文件使用方式); ^fp-->用户自定义的文件类型指针变量; 文件的使用方式,具有特定含义的符合 fopen函数功能:以指定的方式打开指定的文件,若操作成功,则返回一个指向该文件的指针,若打开文件时错误,返回NULL; 例如: FILE *fp; fp=fopen("/C/005/ruiy.dat","rw+");
7,文件的使用方式;
文件的操作模式基本字符[单独使用是对文本文件]; r -->仅为读二打开,(只读文件) w-->仅为写打开, (建立新文件) a -->仅为添加而打开, (写旧文件) 【注意】前面不是说了吗:C把文件看作是有一个ascii字符或一个二进制字符组成的. 2,按二进制格式读写文件,字符方式+b; b辅助说明,按二进制格式读写文件. eg:fp=fopen("ruiy.dat","rb");
8,fclose
usage:int fclose(FILE *指针变量名);
功能:关闭文件指针所指向的文件,正常关闭了,函数返回值为0,失败则为非0;
fclose(fp);//关闭文件所指向的文件;
9,文件读写操作
单个字符操作读写函数,
fputc函数
一般调用形式:
fputc(字符常量或变量,文件指针);
功能:把指定字符存入文件指针所指向的文件中;
如果输出失败,则返回一个EOF,(-1);
EOF是在stdio.h头文件中的定义的符合常量,值为-1,
eg:fputc(ch,fp);
其中ch为字符变量,fp为文件指针,
含义,将ch的值输出到ftp所指向的文件中
fgetc函数;
一般调用形式,字符变量=fgetc(文件指针);
功能:从文件指针所指文件中读取一个字符赋给指定的字符变量,当遇到一个文件结束符,返回一个文件结束符标志
eg:ch=fgetc(fp);