如表8 - 1所示,文件的操作方式有文本文件和二进制文件两种,打开文件的正确方法如下
例所示:
#include
FILE *fp;
If((fp=fopen("test.txt","w"))==NULL)
{ /*创建一个只写的新文本文件* /
printf("cannot open file \n");
exit(0);
}
这种方法能发现打开文件时的错误。在开始写文件之前检查诸如文件是否有写保护,磁盘是否已写满等,因为函数会返回一个空指针NULL,NULL值在stdio.h中定义为0。事实上打开文件是要向编译系统说明三个信息:①需要访问的外部文件是哪一个。②打开文件后要执行读或写即选择操作方式。③确定哪一个文件指针指向该文件。对打开文件所选择的操作方式来说,一经说明不能改变,除非关闭文件后重新打开。是只读就不能对其写操作,对已存文件如以新文件方式打开,则信息必丢失。
3. 文件的关闭
ANSI C 提供了关闭文件的函数:
int fclose(FILE *stream)
fclose( )函数关闭与stream相连接的文件,并把它的缓冲区内容全部写出。在fclose( )函数调用以后,流stream与此文件无关,同时原自动分配的缓冲区也失去定位。fclose( )函数关闭文件操作成功后,函数返回0;失败则返回非零值。
[例8-1] 打开和关闭一个可读可写的二进制文件:
#include
main( )
{
FILE *fp;
If ((fp=fopen("test.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
/ *写入对文件执行读写的代码 */
if (fclose(fp)) printf("file close error!\n");
}
8.1.2 文件的读写
当文件按指定的工作方式打开以后,就可以执行对文件的读和写。下面按文件的性质分类进行操作。针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读写或按字符串读写;对二进制文件来说,可进行成块的读写或格式化的读写。