文件的输入输出:
操作系统把各种设备都统一作为文件来处理,c的数据文件是由一串的字符(字节)组成,不考虑行的界限,两行数据间不会自动加分隔符,对文件的存取是以字符(字节)为单位的。输入输出数据流的开始和结束仅受流程控制而不受物理符号的控制。
文件名:文件路径 文件名主干 和文件后缀
文件分类:ASCII文件和二进制文件,数据可以用ASCII形式存储也可以用二进制形式存储
文件缓冲区:从内存向磁盘输出数据必须先送到内存中的缓存区,装满缓存区后才一起送到磁盘去。从磁盘读入时,一次从磁盘将一批数据输入到内存缓冲区,然后再从缓冲区逐个的将数据送到程序数据区。
文件类型指针:每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的有关信息(保存在结构体变量中,由系统命名FILE)。
打开文件就是为文件建立相应的信息区(用来存放有关文件的信息)和文件缓冲区(用来暂时存放输入输出的数据),关闭文件就是撤销文件信息区和文件缓冲区
fopen打开文件: fopen(文件名,使用文件方式) 如fopen(“a1”,“r”)表示打开文件名为a1的文件,使用文件方式为读入,fopen的返回值是指向a1文件的指针(a1文件信息区的起始地址)
fclose关闭文件:fclose(文件指针)成功关闭,返回0,否则返回EOF(-1);
feof函数:其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除。
顺序读写数据文件:对文件读写数据的顺序和数据在文件中的物理顺序是一致的
向文件读写字符:fgetc(fp) 从fp指向的文件读入一个字符(成功返回所读字符,失败返回EOF)
fputc(ch,fp)把字符ch写到文件指针变量fp所指向的文件中(输出成功,返回输出字符,输出失败,返回EOF)
向文件读写一个字符串:
fgets(str,n,fp);从fp所指向的文件中读入一个长度为n-1的字符串,并在最后加一个‘\0’字符,然后把这n个字符放到字符组str中
fputs(str,fp)把str所指向的字符串写到文件指针变量fp所指向的文件中,输出成功
用格式化的方式读写文件(读写对象不是终端而是文件,printf读写对象是终端):
fprintf(文件指针,格式字符串,输出表列);
fscanf(文件指针,格式字符串,输入表列);转换费时
用二进制方式向文件读写一组数据
fread(buffer,size,count,fp);从文件中读一个数据块
fwrite(buffer,size,count,fp);(buffer是一个地址存放从文件读入的数据的存储区的地址,size要写的字节数,count,要读写多少数据项,fp则是FILE类指针)
执行成功返回count的值
随机读写数据文件:可以对任何位置上的数据进行访问
文件位置标记及其定位
1.文件位置标记
用来指示接下来要读写的下一个字符的位置
2.文件位置标记的定位
强制使文件位置标记指向人们指定的位置:(1)用rewind函数是文件位置标记指向文件开头,无返回值(2)fseek函数改变文件位置标记fseek(文件类型指针,位移量,起始点)(起始点用0、1、2代替,0代表文件开始位置,1为当前位置,2为文件末尾位置,位移量应是long型数据,如50L)(3)用ftell函数测定文件位置标记的当前位置,如果函数出错,则返回-1L
文件读写的出错检测:
ferror函数(ferror(fp),如果返回值为0(表示未出错,返回非零值表示出错))
clearerr函数(clearerr(fp)使文件错误标志和文件结束标志(即ferror(fp))置0)