字符读/写
Fputs:把字符写入指向文件中 正常返回c ; 出错返回EOF
Int fputs(char c, FILE *fp)
Fgets:指向文件中读取字符 正常返回c ; 出错或读到文件尾部返回EOF
Int fgets(FILE *fp)
判断文件是否结束
While(fgetc(fp) != EOF)
If(feof(fp))
Printf(“end of file\n”);
字符串读/写: fgets与fputs
char *fgets(char *s,int n,FILE *fp)
int fputs(char *s,FILE *fp)
功能:从fp指向的文件读/写一个字符串
返回值:
fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULL
fputs正常时返回写入的最后一个字符;出错为EOF
fgets从fp所指文件读n-1个字符送入s指向的内存区,
并在最后加一个‘\0’(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)
格式化输入/输出
与printf函数和scanf函数作用相仿,但读写对象不是终端而是文件(即将字符串存储在文件里)一般调用格式为:
fprintf(文件指针,格式字符串,输出表列);
fscanf(文件指针,格式字符串,输入表列);
功能:按格式对文件进行I/O操作
返回值:成功,返回I/O的个数;出错或文件尾,返回EOF
二进制文件的顺序读写
一次读写一个数据块
一般调用形式为: fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
功能:读/写数据块,把内存的内容直接复制到文件里
返值:成功返回读/写的块数;出错或文件尾,返回0
说明:
buffer: 指向要输入/输出数据块的首地址的指针
size: 每个要读/写的数据块的大小(字节数)
count: 要读/写的数据块的个数
fp: 要读/写的文件指针
fread与fwrite 一般用于二进制文件的输入/输出
文件定位函数及文件随机读写
几个概念
文件位置指针-----指向当前读写位置的指针
读写方式
顺序读写:位置指针按字节位置顺序移动,叫~
随机读写:位置指针按需要移动到任意位置,叫~
rewind函数
函数原型: void rewind(FILE *fp)
功能:重置文件位置指针到文件开头
返回值:无
fseek函数
函数原型:int fseek(FILE *fp,long offset,int whence)
功能:改变文件位置指针的位置
返回值:成功,返回0;失败,返回非0值
位移量(移动的字节数)
>0 向后移动 <0 向前移动
起始点
文件开始 SEEK_SET 0
文件当前位置 SEEK_CUR 1
文件末尾 SEEK_END 2
ftell函数
函数原型: long ftell(FILE *fp)
功能:返回当前的读写位置(即相对文件开头的位移量)
返值:成功,返回当前的读写位置;失败,返回-1L
出错的检测
ferror函数
函数原型: int ferror(FILE *fp)
功能:测试文件是否出现错误
返值:未出错,0;出错,非0
说明:
文件出错标志:在FILE结构中。若该标志设置了,ferror函数返回真(非0),否则返回假。
每次调用文件输入输出函数,均重新设置出错标志,所以应及时测试
fopen打开文件时,文件出错标志没有被设置
clearerr函数
函数原型: void clearerr(FILE *fp)
功能:使文件错误标志置为0
返回值:无
说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数