精髓:把文件当屏幕
一、引入
文件:有限数据的集合
txt文档:有限文本的集合
exe程序:有限指令的集合
内存:一旦电脑关机,内存会被清空
文件:为了长期保存信息,一般文件存储在外存(U盘,光盘,硬盘等)
文件的构成:位置+存储空间
文件的划分:
Ø 文本文件:文件的数据都是以对应字符的ASCII值存到硬盘中
eg:文件(ABC) 在内存中[010000001][01000010][01000011][-1]
文件结束符为-1(EOF)
Ø 二进制文件
二、文件操作三部曲
1、 打开 FILE* fopen(“path”,”操作的方式”)注:path可为指针,如存有地址的数组名
操作方式: (对二进制文本后面加b即可)
Ø 只读 r:如果文件不存在则报错
Ø 只写 w:如果文件不存在,则新建。若存在,则截断为0
Ø 追加 a+:打开文件时,文件读写指向文件末尾
Ø 可读写 r+可读写,但文件不存在返回错误
w+可读写,如果文件不存在则创建
2、 读写操作
ü 文本文件:
写:
fputc(“”,fp) 打印一个字符到文件中
fputs(“”,fp) 打印一个字符串
fprintf(fp,””) 格式化打印任意内容
类比记忆:printf打印到屏幕,sprintf打印到字符串,fprint打印到文件
读:
fgetc(fp) 读一个字符
fgets(fp) 读一个字符串
fscanf(fp,”%d%s”,&a,s)格式化读
文本结束条件:
1) while(!feof(fp))…..
2) 文件结束符为-1(EOF)
ü 二进制文件
读:fread(&a,sizeof(int),1,fp); 返回实际读写的次数
写:fwrite(a,sizeof(int),1,fp); 返回实际读写的次数
结束条件:
二进制文本没有结束标志,通过判断上面两个函数返回值判断是否结束
3、 关闭
硬盘中无法匹配速度,故文件在寄存器中读写,而寄存器具有易失性
只有正常关闭,系统才会将缓冲区的数据正常写(或读取)到磁盘
三、定位
文件每以打开时,都有一个文件的读写位置。
每读或写n个Byt时,文件的读写位置就会移动此n+1的位置。
每次新打开一个文件时,读写位置都位于文件头,因此不以a方式打开时,会覆盖。
重定位函数 int fseek((FILE*,int offset,int whence) 重定位成功返回0,失败返回-1
whence:基准(开头SEEK_SET,当前SEEK_CUR,结尾SEEK_END)
offset:位移量(>0向右移动 <0向左移动)