文件流操作:fseek()、rewind()、fprintf()、fscanf()

1、fseek()

int fseek(FILE * stream, long offset, int whence);

函数说明:
fseek()用来移动文件流的读写位置.

1、参数stream 为已打开的文件指针,
2、参数offset 为根据参数whence 来移动读写位置的位移数。参数 whence 为下列其中一种:
    SEEK_SET 从距文件开头offset 位移量为新的读写位置. SEEK_CUR 以目前的读写位置往后增加offset 个位移量.
    SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. 当whence 值为SEEK_CUR 或
    SEEK_END 时, 参数offset 允许负值的出现.

下列是较特别的使用方式:
1) 欲将读写位置移动到文件开头时:fseek(FILE *stream, 0, SEEK_SET);
2) 欲将读写位置移动到文件尾时:fseek(FILE *stream, 0, 0SEEK_END);

返回值:当调用成功时则返回0, 若有错误则返回-1, errno 会存放错误代码.

附加说明:fseek()不像lseek()会返回读写位置, 因此必须使用ftell()来取得目前读写的位置.

2、void rewind(FILE * stream);

rewind()函数用于将文件指针重新指向文件的开头,同时清除和文件流相关的错误和eof标记,相当于调用fseek(stream, 0, SEEK_SET),其原型如下:
【参数】stream为以打开文件的指针。
注意:准确的说,这里的指针不是文件指针stream,而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。

3、fprintf函数 
fprintf函数的功能是和printf函数类似,传送格式化输出到一个流中;只不过fprintf函数的读写对象不是 终端 而是 磁盘文件。
函数原型:
fprintf(FILE * stream, const char * format, 输出表列);
int fprintf(FILE *stream, char *format[, argument,...]);
fprintf接受一串参数,用format指定的格式串中包含的格式说明符,分别作用在这些参数上,并将格式化数据输出到一个流上。
注意格式 说明符的格数 必须与 参数的格数 相同。(有多少%,后面就有多少参数)如果调用成功,将返回转换的字节数,失败时返回一个负数;

4、fscanf()函数
函数原型:int fscanf( FILE *stream,const char *format [,argument ]... );
作用:Read formatted data from a stream.(从流中 读取 格式化的数据)

猜你喜欢

转载自blog.csdn.net/linuxwln/article/details/81450270
今日推荐