0x01

文件都是采用二进制方式记录数据
如果文件里的所有二进制数据都有对应的字符,这种文件叫做文本文件
除了文本文件以外的文件都叫二进制文件

文本文件和二进制文件分别采用不同的方式进行操作(文本文件也可以当做二进制文件进行操作)

文件操作步骤
1.打开文件(fopen)
2.操作文件(fwrite/fread);
3.关闭文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdio.h"

int main(){
FILE *p_file = fopen("a.txt","w");
//demo 1
if(p_file){
/* code */
fclose(p_file);
p_file = NULL;
}

//demo 2
if(!p_file){
return 0;
}
fcolse(f_file);
p_file =NULL;

return 0;
}

fopen
函数原型:
功能:用来打开一个文件
参数一:一个文件路径
参数二:打卡文件的方式(决定可以对文件进行什么样的操作)
打开方式:
      ”r”:只能查看文件内容,不能修改,如果文件不存在会打开失败
      ”r+”:比上面的“r”多了修改功能
      ”w”:只能修改文件内容,不能查看,如果文件不存在便创建文件,如果文件已经存在便把内容都清除
      ”w+”:比上面的“w”多了查看文件内容的功能
      ”a”:只能修改不能查看,修改方式是在原文件内容后面追加,文件不存在创建文件,文件存在不会修改文件原有内容
      ”a+”:比上面的“a”多了查看文件内容的功能
      ”b”:程序以二进制文件操作,可以和前面的任何一种混合
fopen的返回值只能记录在文件指针里,程序中只能用文件指针代表文件
fopen如果失败就返回NULL
一但完成对文件的所有操作,必须使用fclose函数关闭文件
文件关闭以后文件指针成为野指针,必须恢复成空指针

文件操作分成两种
1.把内存里连续一组存储区内容拷贝到文件里,叫做写文件(fwrite)
2.把文件里一组连续存储区内容拷贝到内存中,叫做读文件(fread)

fwrite/fread都是以二进制方式操作文件的
这两个函数都需要四个参数
1.内存里第一个存储区地址
2.内存里单个存储区大小
3.希望操作的存储区个数
4.文件指针

这两个函数都有返回值,它的返回值表示实际操作的个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdio.h"
int main(){
int arr[5]={0},size =0;
int i=0;
FILE *p_file = fopen("a.bin","rb");
if(p_file){
size = fread(arr,sizeof(int),5,p_file);
printf("a.bin 文件读到 %d 个整数\n",size );
for(i=0;i<size;i++){
printf("%d",arr[i]);
}
fcolse(p_file);
p_file = NULL;
}

return 0;
}