文件
一、输入输出函数
文件都采用二进制方式记录数字。
如果文件里所有的二进制 数据都有对应的字符, 就把这种文件叫做文本文件。
除了文本文件以外的文件都叫做二进制文件。(二进制文件类似于数组)
文本文件和二进制文件分别采用不同的方式进行操作。文本文件也可以当作二进制文件进行操作。
文件操作的基本步骤:
1.打开文件 fopen
2.操作文件 fread fwrite
3.关闭文件 fclose
以下为文件操作演示:
3 #include<stdio.h>
4 int main(){
5 FILE * p_file=fopen("a.txt","w");//(文件路径,操作方式)
6 //直接用文件名代替路径,是在当前文件所在目录下找这个文件名。
7 //返回值是一个结构体的地址,记录在(文件)指针里。
8 //文件指针代表一个打开的文件。
9 //如果打开失败,就返回一个空地址
10
11 if(p_file){
12 fclose(p_file);
13 p_file=NULL;
14 //把返回值当作一个布尔值来写一个分支
15 //操作文件
16 //关闭文件后,文件指针编程也指针,我们把他恢复成空指针
17 }
18
19
20 return 0;
21 }
22
第二种分支写法:
3 #include<stdio.h>
4 int main(){
5 FILE * p_file=fopen("b.txt","w");//(文件路径,操作方式)
6 //直接用文件名代替路径,是在当前文件所在目录下找这个文件名。
7 //返回值是一个结构体的地址,记录在(文件)指针里。
8 //文件指针代表一个打开的文件。
9 //如果打开失败,就返回一个空地址
10
11 if(!p_file){
12 return 0;
13 }
14
15 fclose(p_file);
16 p_file=NULL;
17
18
19 return 0;
20 }
21
程序里只能用文件指针代表文件,不能用路径代表文件。
fread 和 fwrite都是以二进制方式操作文件的。这两个函数都需要四个参数。
1.内存里第一个存储区的_地址
2.内存里单个存储区的_大小
3.希望 操作的的存储_个数
4. 文件指针
返回值:表示 实际 操作的存储区个数。
fread示例
2 #include<stdio.h>
3
4 int main(){
5 int arr[]={1,2,3,4,5},size=0;
6 FILE * p_file=fopen("a.bin","wb");
7 if(p_file){
8 size=fwrite(arr,sizeof(int),5,p_file);
9 printf("写入%d个整数类型的存储区",size);
10 fclose(p_file);
11 p_file=NULL;
12 }
13 return 0;
14 }
fwrite 示例
2 #include<stdio.h>
3
4 int main(){
5 int arr[5]={0},size=0,num=0;
6 FILE * p_file=fopen("a.bin","rb");
7
8 if(p_file){
9 size=fread(arr,sizeof(int),5,p_file);
10 printf("一共获得%d个整数\n",size);
11 for(num=0;num<=4;num++){
12 printf("%d",arr[num]);
13 }
14 printf("\n");
15 fclose(p_file);
16 p_file=NULL;
17 }
18
19
20 return 0;
21 }
22
文本文件操作指南
要把东西存到文本文件中,需要先把数据转为字符或者字符串
2 #include<stdio.h>
3 #include<string.h>
4 int main(){
5 int arr[]={1,2,3,4,5},num=0;
6 char buf[10]={0};
7 FILE * p_file=fopen("a.txt","wb");
8 //虽然写的是文本文件,但是还是用二进制的方式来写的。
9 if(p_file){
10 for(num=0;num<=4;num++){
11 sprintf(buf,"%d",arr[num]);
12 fwrite(buf,sizeof(char),strlen(buf),p_file); //写到文件中
13 //得到一个字符串,并把它放到字符数组里。
14 }
15 fclose(p_file);
16 p_file=NULL;
17 }
18 return 0;
19 }
20
字符串放在内存里,文件放在硬盘里。
1.文件流
流:输入输出
文件流的操作要用 文件指针 FILE *
标准流是特殊的文件指针 stdin stdout stderr
fopen();fclose();
fscanf();fprintf();
fread();fwrite();
ftell ( ) ; fseek();
2.字符的输入输出
3.字符串的输入输出
sscanf() ; ssprintf();