1、文件的基本概念
存储外部介质上得数据集,数据集有一个名称就是文件名
文件的分类:
1)用户角度:普通文件和设备文件
2)存储的内容:
ascii文件(文本文件):
存储的流程:根据文本找到其对应的ascii码值---->转为二进制-->
写到文件中
读取流程:
二进制-->10进制-->找对应的字符-->显示出来
二进制文件:
二进制数据的存取
文件的操作流程:
1)导入头文件 stdio.h
2) 定义文件指针
3)打开文件
4)操作文件
5)关闭文件
文件操作原理
2、文件指针
FILE 结构体
FILE *fp; 结构体指针
作用:存储一个文件的首地址,指向一个文件
3、文件的打开和关闭
打开 fopen(文件名,操作方式);
fopen("a.txt","r");
//a.txt默认的去products目录去找,/Users/apple/Library/Developer/Xcode/DerivedData/C15-综合项目-cmassyrpkwjxularuygrjqhojbwj/Build/Products/Debug
fopen("/Users/apple/Desktop/a.txt","r");
操作方式:
r w a b + t
读
写 追加
二级制 读写
文本
w -- 写入文件的时候,如果文件不存在,则创建
‘
存在 则覆盖
r+ w+ wb+ a+
关闭文件:
fclose(文件指针);
4、文件操作的函数
1) 字符型数据的读取和写入
写入:
fputc(‘字符‘,文件指针);
char c=‘A‘;
fputc(c,fp);
读取:
char ch = fgetc(fp);
2)字符串类型数据的读取和写入
写入:
fputs(数组名/指针名,fp); //fputs(数组名,stdout);
读取:
fgets(数组名/指针名,长度,fp);
fgets实际读取的字符个数是长度-1
1)遇到\n
结束,遇到EOF也会结束
3)数据块的读取和写入
写入:
fwrite(写入的变量地址,数据块的大小,块数,fp);
int a =123;
fwrite(&a,sizeof(int),1,fp);
struct Student stu1;
fwrite(&stu1,sizeof(struct Student),1,fp);
读取:
struct Student s1;
fread(变量的地址,数据块的大小,块数,fp)
fread(&s1,sizeof(struct Student),1,fp);
//使用s1进行输出
4)格式化的读取和写入
写入数据和读取数据按照一定的格式进行
写入:
fprintf(文件指针,"格式化的字符串",变量列表);
fprintf(fp,"%d,%c,%d#",10,‘a‘,20);
10,a,20#10,a,20#10,a,20#
读取
fscanf(fp,"%d,%c,%d#",&a,&ch,&b);
fprintf(fp,"%d,%s,%d",20,"abc",30);
fscanf(fp,"%d,%s,%d",&a,str,&b);
str = abc,30
改成:
fprintf(fp,"%d,%d,%s",20,20,"abc");
fscanf(fp,"%d,%d,%s",&a,&b,str);
5、文件的随机读取
设定文件的头指针的位置
默认fp是指向文件的首地址
1)rewind(fp); //fp指向首地址
2)fseek(fp,偏移的距离,起始点);
fseek(fp,32L,SEEK_SET); //从文件头部开始,偏移32个字节
6、文件的检测函数
feof() 用来检测文件是否到了末尾
如果没有到末尾 0
到末尾 1
缺点:多执行一次
7、C语言的其他的头文件的介绍
math.h
stdio.h
stdlib.h
time.h
string.h