文章目录
操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。
文本文件与二进制文件:
磁盘只能存储二进制数据。
文件文件中存储的是ASCII码的二进制,先把数据转换成字符中,再写入到文件中,可以直接被文本编辑器打开。
二进制文件中存储的数据的二进制,直接把数据的二进制存储到文件中,无法直接通过文件编辑器查看。
1、打开/关闭文件函数
fopen()函数
功能:用于打开文件
调用格式:FILE *fopen(const char *path, const char *mode)
;
参数:
path:文件的路径(可以是相对路径,也可以是绝对路径)
mode:文件的访问模式
模式 | 描述 |
---|---|
"w" | 以只写权限打开文件,如果文件不存在则创建,存在则清空文件的内容 |
"w+" | 在"w"的基础上增加读取权限 |
"r" | 以只读权限打开文件,如果文件不存在则打开失败 |
"r+" | 在"r"的基础上增加写取权限 |
"a" | 以只写权限打开文件,如果文件不存在则创建,存在保留原内存,新写入的数据会追加到文件末尾 |
"a+" | 在"a"的基础上增加读取权限 |
"b" | 不能单独使用,而是与"wra"配合使用,表示打开的是二进制文件,对于Linux系统二说没什么用 |
如果处理的是二进制文件,使用"rb"
, "wb"
,"ab"
, "rb+"
, "r+b"
, "wb+"
, "w+b"
, "ab+"
, "a+b"
在Windows系统下:
"b"
表示操作的是二进制文件\n
直接写入\n
。
不加"b"
表示操作的是文本文件,\n
会被写入 \n\r
。
返回值:
返回的是一个结构体指针,不需要操作结构的成员,只需要反它当作一个令牌即可,用来区别所操作的文件,如果文件打开失败返回值为NULL。
fclose()函数
功能:关闭一个由 fopen()函数打开的文件 。
调用格式为: int fclose(FILE *stream)
;
返回值:
该函数返回一个整型数。当文件关闭成功时, 返回 0, 否则返回一个非零值。可以根据函数的返回值判断文件是否关闭成功。
示例:
#include <stdio.h>
int main()
{
FILE* frp = fopen("test.txt","r");
if(NULL == frp)
{
perror("fopen");
return -1;
}
if(!fclose(fp))
printf("close ok");
else
printf(""File close error"");
}
2、写操作函数和读操作函数
有关文件操作的函数本节所涉及到的文件读写函数均是指顺序读写,即读写了一条信息后,指针自动。
2.1写操作函数
fprintf()
、fputs()
和fputc()
函数均为文件的顺序写操作函数,下面分别介绍:
fprintf()函数
调用格式:int fscanf(FILE *stream, const char *format, ...)
;
功能:发送格式化输出到流 stream 中
参数&