文件代表一系列的字节。C语言提供了标准库函数用于文件的打开和关闭。
1、文件的打开
打开文件的操作通过标准库函数 fopen 完成,该函数定义如下:
FILE *fopen( const char * filename, const char * mode );
函数 fopen 的第二个参数指定了文件的访问模式,访问模式决定了流所许可的输入和输出操作。对访问模式字符串的许可值有严格的限制。该字符串的第一个字符只能为三种形式:r(read)、w(write)或者 a(append)。另可加字符b表示以二进制方式打开文件。字符串里可以写它们的组合,常用的文件打开方式有:
r:以只读方式打开文件w:以只写方式打开文件a:以添加方式打开或创建文件r+:可以对文件读或写;w+:可以对文件读或写,会覆盖文件原有内容;a+:以添加方式打开,即从文件已有部分后面接着写,也可以读。
函数 fopen 将一个文件和一个流关联起来,并初始化一个类型为 FILE 的对象,该对象包含了控制该流的所有信息。这些信息包括指向缓冲区的指针;文件位置指示器,它指定了获取文件的位置;以及指示错误和文件结尾情况的标志。
需要注意的是,文件打开失败时,函数 fopen 返回空指针,这里必须检查函数的返回值,以确保后续操作的有效性。
2、文件的关闭
关闭文件时需要使用函数 fclose,该函数的定义如下:
int fclose( FILE *fp );
该函数把缓冲区内存在的所有数据保存到文件中,关闭文件,释放所有用于该流输入输出缓冲区的内存。函数 fclose 返回 0 表示成功,返回 EOF 表示产生错误。
当程序退出时,所有打开的文件都会自动关闭。尽管如此,还是应该在完成文件处理后,主动关闭文件。否则,一旦遇到非正常的程序终止,就可能会丢失数据。
3、文件的读写
标准的读写函数:
字符读写函数 :fgetc和fputc。以字符(字节)为单位,每次可从文件读出或向文件写入一个字符。
字符串读写函数:fgets和fputs。
数据块读写函数:freed和fwrite。
格式化读写函数:fscanf和fprinf。
使用以上函数都要求包含头文件stdio.h。