4) 若要向一个已存在的文件追加新的信息 , 只能用“a”方式打开文件 。但此时该文件必须是存在的 , 否则将会出错 。
5) 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL 。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理 。因此常用以下程序段打开文件:
6) if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch();
exit(1);
}
这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示 。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示 。敲键后执行exit(1)退出程序 。
7) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时 , 也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间 。对二进制文件的读写不存在这种转换 。
8) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的 , 可直接使用 。
13.3.2 文件关闭函数(fclose函数)
文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误 。
fclose函数调用的一般形式是:
fclose(文件指针);
例如:
fclose(fp);
正常完成关闭文件操作时 , fclose函数返回值为0 。如返回非零值则表示有错误发生 。
13.4 文件的读写
对文件的读和写是最常用的文件操作 。在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
下面分别予以介绍 。使用以上函数都要求包含头文件stdio.h 。
13.4.1 字符读写函数fgetc和fputc
字符读写函数是以字符(字节)为单位的读写函数 。每次可从文件读出或向文件写入一个字符 。
1. 读字符函数fgetc
fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:
字符变量=fgetc(文件指针);
例如:
ch=fgetc(fp);
其意义是从打开的文件fp中读取一个字符并送入ch中 。
对于fgetc函数的使用有以下几点说明:
1) 在fgetc函数调用中,读取的文件必须是以读或读写方式打开的 。
2) 读取字符的结果也可以不向字符变量赋值,
例如:
fgetc(fp);
但是读出的字符不能保存 。
3) 在文件内部有一个位置指针 。用来指向文件的当前读写字节 。在文件打开时,该指针总是指向文件的第一个字节 。使用fgetc 函数后,该位置指针将向后移动一个字节 。因此可连续多次使用fgetc函数,读取多个字符 。应注意文件指针和文件内部的位置指针不是一回事 。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的 。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次 , 该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的 。
【例13.1】读入文件c1.doc , 在屏幕上输出 。
#includestdio.h
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
- mongodb查看数据库大小 查看mongodb集群容量
- mysql数据库优化 mysql订单优化
- mongodb数据丢失原因 为什么mongodb数据库一直在加载中
- mongodb 查看数据库 mongodb查询数据库表
- mongodb显示所有数据库 mongodb数据突然为空
- mysql备份一个表的数据 备份一个mysql库
- 屏蔽数据库的复杂性 mysql数据库屏蔽权限
- mongodb 创建表 mongodb创建数据库的语法
- 往mysql数据库录数据 lua写数据库mysql
- mongodb数据库语句 mongodb数据库文档
