目录
1.什么是文件
文件指的是磁盘上的文件,一般有程序文件和数据文件。
一般后缀名为.c,.obj,.exe均为程序文件,而本篇主要讲关于对数据文件的操作。
2.文件操作
2.2文件使用
要对文件进行操作,需使用文件指针来进行操作。例如:
FILE* pf;
定义一个文件指针变量pf,它可以指向某个文件的文件信息区,通过其即可访问到该文件。
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如:文件名、文件状态、文件位置等),这些信息被保存到一个结构体中,系统为其声明为FILE,在编写程序的时候,在打开文件的同时,都会返回一个 FILE* 的指针变量指向该文件,也相当于建立了指针和文件的关系。
2.3文件打开与关闭
文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
ANSIC 规定使用 fopen 函数来打开文件,fclose 来关闭文件。
//打开文件
FILE* fopen(const char* filename, const char* mode);
//关闭文件
int fclose(FILE* stream);
2.3.1文件打开方式
使用方式 | 作用 | 如果文件不存在 |
"r"(只读) | 为了输入数据,打开一个已经存在的文本文件 | 出错 |
"w"(只写) | 为了输出数据,打开一个文本文件 | 建立一个新的文件 |
"a"(追加) | 向文本文件添加数据 | 建立一个新的文件 |
"rb"(只读) | 为了输入数据,打开一个二进制文件 | 出错 |
"wb"(只写) | 为了输出数据,打开一个二进制文件 | 建立一个新的文件 |
2.3.2文件的顺序读写
功能 | 函数 | 适用于 |
字符输入函数 | fgetc | 所有输入流 |
字符输出函数 | fputc | 所有输出流 |
文本行输入函数 | fgets | 所有输入流 |
文本行输出函数 | fputs | 所有输出流 |
格式化输入函数 | fscanf | 所有输入流 |
格式化输出函数 | fprintf | 所有输出流 |
二进制输入 | fread | 文件 |
二进制输出 | fwrite | 文件 |
实例1:
int main()
{
FILE* pf= fopen("test.txt", "w+");
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return;
}
//输入一个字符
fputc('a', pf);
//用完关闭文件
fclose(pf);
pf = NULL;
return 0;
}
提示:本例用于“w+”新建test.txt文件并在其文件中写入a。
实例2:读取一个字符。
//读取一个字符
int ch = fgetc(pf);
if (ch != EOF)
{
printf("%c\n", ch);
}
实例3:读取指定长度的数据。
//定一一个数组
char arr[10] = { 0 };
fgets(arr, 5, pf); //将所读取的数据放入arr中
printf("%s\n", arr);