导言:
文件操作在C语言中是一个重要的知识点,也是C语言的一个优势,我们应该掌握C语言文件操作的基本流程和一些常用函数,这样就能做一些最基本的操作.
文件操作的基本流程:
①打开文件(复制硬盘中的一份文件到内存中):
fopen函数
功能:打开一个文件,将磁盘上的文件内容复制一份到内存中
原型:
FILE *fopen
(
const char *filename, //参数1
const char *mode //参数2
);
参数说明:
参数1:文件的路径(可以是绝对路径也可以是相对路径,如果是相对路径,那么相对的当前所编写的代码文件的目录)
参数2:打开方式
"r":只可读,文件不存在的话,函数返回NULL
"w":可读可写,但是不可追加,文件不存在的话自动创建文件
"a":可读可写,并且可追加,文件不存在的话自动创建文件
返回值:FILE*,返回的是一个结构体指针,FILE代表一个结构体
②操作文件(读文件和写文件):
读文件和写文件也是通过C语言提供给我们的函数来完成的,读写函数有多对(根据方式的不同,读写函数有多对,一个读函数和一个写函数是一 一对应的(不是一定的,但是这样比较方便,比如一次性写入3个字节,那么读的时候最好一次性读3个字节,如果读的时候使用了一次性读取一行的方式,那么还要将数据进行分离,比较麻烦),这两个相互对应的函数对文件读写方式是一样的).
读文件(将文件的内容读入到程序中,根据需求将数据进行处理):
fread函数
原型:
int fread{
void* buffer; //参数1
int size; //参数2
int count; //参数3
FILE* stream //参数4
};
功能:可以从文件中读入n个字符,读进数组中
参数说明:
参数1:文件读出来的内容所存放的地方,可以是字符数据
参数2:同fwrite一样
参数3:同fwrite一样
note:参数2*参数3的结果是要从文件中读出来的字节总数
参数4:文件指针
返回值:
返回读到的字节数
写文件(更新文件):
fwrite函数
原型:
int fwrite{
const void* buffer; //参数1
int size; //参数2
int count; //参数3
FILE* stream //参数4
};
功能:往文件中写入数据(此时数据是写入内存中的,还没有到磁盘的文件上)
参数说明:
参数1:要写入的数据的首地址,比如要将int a=2;将a的值写入文件,那么 此时就是将&a传入即可
参数2:一般都是sizeof(数据类型)
参数3:有多少个这样类型的数据
Note:参数2和参数3的乘积是总共要写入的字节数,比如我们在程序中定义了int a[10],那么参数2一般要填sizeof(int),代表每个int型的数据占用多少个字节,而参数3可以填入10,或者小于10,具体看你要写入多少的字节数到文件,如果全部写入,参数3就填10,代表有10个这样的int型数据,那么两者相乘的结果就是最终要写入到文件中的字节数,即40Byte.其实,只要参数2和参数3的乘积,两者相乘不超过40Byte即可,意味着参数2可以写1,参数3可以写40
参数4:要写入的文件的文件指针
返回值:
如果写入成功,那么函数返回写入到文件中(此时还是在内存)的字节数,如果写入失败,那么返回0.
③关闭文件(保存文件,将在内存修改后的内容写回硬盘):
原型:int fclose(
FILE* stream;
);
功能:关闭文件(保存到文件中,这步一定要做,否则之前对文件内容的操作全部不起作用)
参数说明:要写入的文件的文件指针
返回值:若文件关闭成功则返回0,如果关闭不成功,则返回-1,错误码放在errno中.