1、文件
程序文件
数据文件(主要讨论)
1)文件时程序设计中一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合
2)数据文件可分为ASCII文件和二进制文件
3)ANSI C标准采用“缓冲文件系统”处理数据文件。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘中去。如果从磁盘向计算机读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)
4)文件信息区:用一个结构体表示名称为FILE。文件指:指向该文件地文件信息区地指针。
2、打开与关闭文件
fopen(文件名,使用文件方式)
fclose(fp)
1、用fopen函数打开数据文件
fopen(文件名,使用文件方式) 返回值为指向FILE结构体地指针
使用文件地方式有:r只读,w只写,a追加,rb只读(二进制文件),wb只写(二进制文件),ab追加(二进制文件)
如果不能实现“打开”地任务fopen函数将带回一个空指针NULL
2、用fclose函数打开数据文件
fclose(fp) 成功返回0,否则返回EOF(-1)
3、顺序读写数据文件
fgetc(fq)
1、 从fq指向地文件读入一个字符
fputs(ch,fq)
2、把字符ch写到文件指针变量fq所指向的文件中
3、C系统已经将fgetc和fputc定义为宏:getc和fputc
feof(fq)
4、用于检查是否读取到文件的末尾:若读到文件末尾返回1,否则返回0
5、像文件读写一个字符串
fgets(str,n,fp)
从fq指向的文件读入一个长度为n-1的字符串末尾添加\0,存放到字符数组str中.成功返回str首地址,失败返回NULL。若提前遇到\n或者EOF则读入结束,但是\n会被读入。gets是从终端进行读字符串
fputs(str,fq)
把str所指向的字符串写到文件指针变量fq所指向的文件中,成功返回0,失败返回EOF
6、用格式化的方式读写文件:
fprintf(文件指针,格式字符串,输出表列)
fprintf(文件指针,格式字符串,输入表列)
需要进行二进制和ASCII码间的转换速度比较慢
用二进制方式向文件读写一组数据:
fread(buffer,size,count,fq)
fwrite(buffer,size,count,fq)
buffer 是一个地址,对fread来说,它是用来存放从文件读入的数据的存储区的地址
对fwrite来说,是要把此地址开始的存储区中的数据向文件输出。
size:要读写的字节数
count:要读写多少个数据项
fq:FILE类型的指针
4、随机读写数据文件
rewind(fq)
该函数使文件的位置指向文件开头
fseek(文件类型指针,位移量,起始点)
“起始点”用0,1,2代替,分别表示“文件开始位置”,“当前位置”,“文件末尾位置”
“位移量”以“起始点”为基点,向前移动的字节数,为long型数据
ftell(fq)
函数测定文件位置标记的当前位置
5、文件读写的出错检测
ferror(fq)
clearerr(fq)
每次调用一次文件输入输出函数ferror都会有一个返回时,未出错返回0,否则返回非0
chearerr(fq)可以将ferror(fq)值变为0,以便下一次的检测。