700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux

fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux

时间:2020-10-09 03:55:51

相关推荐

fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux

程序:

#include<stdio.h>

intmain(intargc,char*argv[])

{

FILE*stream;

fpos_tpos;

stream = fopen(“/etc/passwd”,”r”);

fseek(stream,5,SEEK_SET);

printf(“offset=%d/n”,ftell(stream));

rewind(stream);

/*取得指针位置并存入&pos所指向的对象*/

fgetpos(stream,&pos);

printf(“offset=%d/n”,pos);

pos = 10;

fsetpos(stream,&pos);

printf(“offset=%d/n”,ftell(stream));

fclose(stream);

return 0;

}

结果:

offset=5

offset= 0

offset = 10

fseek(移动文件流的读写位置)

头文件

#include<stdio.h>

定义函数

intfseek(FILE*stream,longoffset,intwhence);

函数说明

fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数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()来取得目前读写的位置。

ftell(取得文件流的读取位置)

头文件

#include<stdio.h>

定义函数

longftell(FILE*stream);

函数说明

ftell()用来取得文件流目前的读写位置。参数stream为已打开的文件指针。

返回值

当调用成功时则返回目前的读写位置,若有错误则返回-1,errno会存放错误代码。

错误代码EBADF参数stream无效或可移动读写位置的文件流。

rewind(重设文件流的读写位置为文件开头)

头文件

#include<stdio.h>

定义函数

voidrewind(FILE*stream);

函数说明

rewind()用来把文件流的读写位置移至文件开头。参数stream为已打开的文件指针。此函数相当于调用fseek(stream,0,SEEK_SET)。

返回值

无返回值

fgetpos(取得当前文件的指针所指的位置)

头文件

#include<stdio.h>

函数原型

intfgetpos(FILE*stream,fpos_t*pos);

函数功能

取得当前文件的指针所指的位置,并把该指针所指的位置数存放到pos所指的对象中。pos值以内部格式存储,仅由fgetpos和fsetpos使用。其中fsetpos的功能与fgetpos相反,为了详细介绍,将在后节给与说明。

返回值

成功返回0,失败返回非0,并设置errno。

fsetpos(将文件指针定位在pos指定的位置上)

头文件

#include<stdio.h>

函数原型

intfsetpos(FILE*fp,constfpos_t*pos);

函数功能

将文件指针定位在pos指定的位置上。该函数的功能与前面提到的fgetpos相反,是将文件指针fp按照pos指定的位置在文件中定位。pos值以内部格式存储,仅由fgetpos和fsetpos使用。

返回值

成功返回0,否则返回非0。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。