size_t fread(void *ptr,size_t size,size_t nobj,FILE *stream)
fread函数从流 stream 中读取最多 nobj 个长度为 size 的对象,并保存到 ptr 指向的数组中。它返回读取的对象数目,此返回值可能小于 nobj。必须通过函数 feof 和 ferror获得结果执行状态。
size_t fwrite(const void *ptr,size_t size,size_t nobj,FILE *stream)
fwrite函数从ptr指向的数组中读取nobj个长度为size的对象,并输出到流stream中。它返回输出的对象数目。如果发生错误,返回值会小于 nobj 的值。
int fseek(FILE *stream,long offset,int origin)
fseek函数设置流 stream 的文件位置,后续的读写操作将从新位置开始。对于二进制文件,此位置被设置为从origin开始的第offset个字符处。Origin的值可以为SEEK_SET(文件开始处)、SEEK_CUR(当前位置)或 SEEK_END(文件结束处) 。对于文本流,offset必须设置为 0,或者是由函数 ftell 返回的值(此时 origin 的值必须是 SEEK_SET)。 fseek函数在出错时返回一个非 0 值。
注:
fseek()函数出错时返回的是非零值,不一定是-1(我被这个坑过)
long ftell(File *stream)
ftell函数返回stream流的当前文件位置,出错时该函数返回-1L
注:
一般情况下,这个-1L与-1没有区别,但还是注意为好
void rewind(FILE *stream)
rewind(fp)函数等价于语句fseek(fp, 0L, SEEK_SET);clearerr(fp)
的执行结果。(clearerr函数见下文)
int fgetpos(FILE *stream,fpos_t *ptr)
fgetpos 函数把 stream 流的当前位置记录在*ptr 中,供随后的 fsetpos 函数调用使用。若出错则返回一个非 0 值。
int fsetpos(FILE *stream,const fpos_t *ptr)
fsetpos 函数将流 stream 的当前位置设置为 fgetpos 记录在*ptr 中的位置。若出错则返回一个非 0 值。
当发生错误或到达文件末尾时,标准库中的许多函数都会设置状态指示符。这些状态指示符可被显式地设置和测试。另外,整型表达式 errno(在
void clearerr(FILE *stream)
clearerr 函数清除与流 stream 相关的文件结束符和错误指示符。
int feof(FILE *stream)
如果设置了与 stream 流相关的文件结束指示符,feof 函数将返回一个非 0 值。
int ferror(FILE *stream)
如果设置了与 stream 流相关的错误指示符,ferror 函数将返回一个非 0 值。
void perror(cinst char *s)
perror(s)函数打印字符串 s 以及与 errno 中整型值相应的错误信息,错误信息的具体内容与具体的实现有关。该函数的功能类似于执行下列语句:
fprintf(stderr, "%s: %s\n", s, "error message");
有关函数 strerror 的信息,以后再写。