一.什么是文件
文件是磁盘上的文件,文件中存放的数据不随程序的退出而销毁.
二.文件的打开与关闭
1.文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.
下面演示用C语言创建一个文件指针变量:
FILE* pf;
//pf即为文件指针变量
定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。
也就是说,通过文件指针变量能够找到与它关联的文件.
2.文件的打开
文件在读写之前应该先打开文件.
ANSIC规定使用fopen()函数来打开文件:
FILE * fopen ( const char * filename, const char * mode );
//fopen()函数的函数定义
我们用c语言演示一下用fopen()函数以读的方式打开一个名为"test.txt"的文件:
FILE*pf=fopen("test.txt","r");
下面我们需要判断文件是否打开成功,如果打开失败,则不能再进行后续操作,而需要及时检查错误.
演示一下判断文件是否成功,如果失败,则用perror()函数输出错误信息后终止程序:
if (pf == NULL)
{
perror("fopen");
return 1;
}
如果成功,则继续运行后续操作.
3.文件的关闭
文件在使用结束后应该关闭文件.
ANSIC规定使用fclose()函数来关闭文件:
int fclose ( FILE * stream );
//fclose()函数的函数定义
如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。
C 标准库提供了各种函数来按字符或者以固定长度字符串的形式读写文件。
下面演示一下使用fclose()函数关闭文件:
fclose(pf);
在使用fclose()函数关闭文件后,要记得将pf指针置为空指针,否则后续继续使用pf指针就会造成非法访问 .
下面的操作就是将pf置为空指针:
pf=NULL:
三.文件的顺序读写
功能 | 函数名 | 适用于 |
---|---|---|
字符输入函数 | fgetc | 所有输入流 |
字符输出函数 | fputc | 所有输出流 |
文本行输入函数 | fgets | 所有输入流 |
文本行输出函数 | fputs | 所有输出流 |
格式化输入函数 | fscanf | 所有输入流 |
格式化输出函数 | fprintf | 所有输出流 |
二进制输入 | fread | 文件 |
二进制输出 | fwrite | 文件 |