文件操作相关函数
1.打开文件 FILE *fopen(const char * path, const char * mode);
- 第一个参数:文件路径,例如:
"E:/BIT/代码/C语言实例_100"
- 第二个参数:是打开方式,
"r"
只读,"w"
只写,"a"
追加 - 函数返回值:文件指针
- 写文件路径时要注意:
\t
是转义字符,因此用/
代替\
更好 - 如果打开文件失败:返回
NULL
,因此使用时要有空指针检查 - 文件指针也可以叫做 句柄
- 程序可以打开的文件是有限的,打开文件后忘记关闭将导致句柄泄露/资源泄露/文件描述符泄露
2.关闭文件 int fclose(FILE *fp);
- 参数:需要关闭的文件的文件指针
- 返回值:成功关闭返回 0 ,否则返回 EOF(-1)
- 一定要即使关闭,否则可能会造成句柄泄露(或者叫做资源泄露 / 文件描述符泄露)
- 如果程序退出,文件将自动关闭
3.读文件 size_t fread ( void *buffer, size_t size, size_t count, FILE *fp) ;
- 函数功能:把数据从磁盘读到内存中
- 返回值:真实读到的元素个数
- 第一个参数:内存缓冲区的起使位置
- 第二个参数:元素大小(字节)
- 第三个参数:元素个数
- 第四个参数:文件指针
4.写文件 size_t fwrite(const void* buffer, size_t size, size_t count, FILE* fp);
- 函数功能:从内存中写到磁盘中
- buffer:要获取数据的地址
- size:要写入内容的单字节数
- count:要进行写入size字节的数据项的个数
- fp:目标文件指针
- 返回值:实际写入的数据项个数count
5.错误检查
例如: 如果fopen()
打开的是一个不存在的路径,那么将返回NULL
FILE* fp = fopen("E:/BIT/xxx.txt", "a");
if (fp == NULL) {
//printf("打开文件失败, %s\n", strerror(errno));
perror("打开文件失败\n");
return 1;
}
- strerror 通过标准错误的标号
errno
,获得错误的描述字符串 ,将单纯的错误标号转为字符串描述,方便用户查找错误 - perror() 在库函数中有个
errno
变量,每个errno
值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno
的值。perror
函数只是将你输入的一些信息和现在的errno
所对应的错误一起输出