目录
C语言文件操作函数
C标准库中提供了一系列的函数,来操作文件。因为C库函数做了这个中间层,屏蔽掉了操作系统上对于文件的不同处理。
关于文件的常见基本操作有:
- 打开文件:创建文件或打开文件载体(磁盘)中已有的文件
- 关闭文件:类似free,释放掉内存中与文件有关的动态资源
- 读取文件:数据由文件载体(磁盘)到内存
- 写入文件:数据由内存到文件载体(磁盘)
fopen:打开或创建文件
fopen的原型为:
FILE *fopen( char *filename, char *mode );
它的两个参数:
- filename:需要打开或者创建的文件的文件名
- mode:相关属性,如只读、只写、是否新建等
它的返回值,是一个指向FILE结构体的指针。FILE结构体,就是C库函数对文件的抽象封装,里面记录了文件各种信息。不过我们不用了解FILE内部的细节,因为我们不会直接操作FILE结构体,而是通过FILE*指针以及各种C库函数去间接操作FILE结构体。
以下代码,可以创建一个文件,并往其中写入字符串:
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
FILE* pFile = fopen("mytest.txt", "w");
char szBuff[] = "helloworld";
fwrite(szBuff, 1, strlen(szBuff), pFile);
fclose(pFile);
return 0;
}
fopen中的mode参数
fopen中的mode参数是一个字符串,可以是以下情况的选择:
- r:只读方式打开,且文件必须已经存在
- w:以只写方式创建文件,如果文件已经存在,会先删除原有文件的内容
- a:以附加方式打开文件,不会删除原有文件内容,而是默认将内容写在文件的末尾
- r+:读写方式
- w+:读写方式
- a+:附加及都方式
fclose:关闭文件
fclose类似free的作用,告之C库函数可以关闭已经打开的文件,并回收相关资源。
if (pFile != NULL)
{
fclose(pFile);
pFile = NULL;
}