http://c./cpp/html/2421.html 头文件:#include<stdio.h>
fgetpos()函数获得当前文件的指针所指的位置,并把该指针所指的位置信息存放到pos所指的对象中。pos以内部格式存储,仅由fgetpos()和fsetpos()使用。fsetpos()的功能与fgetpos()相反,用来设置当前文件的指针。fgetpos()的原型为: int fgetpos( FILE *fp, fpos_t *pos ); 【参数】fp为当前文件流的指针,pos为指向fpos_t类型的指针。 fpos_t是用来表示文件读写指针位置的类型,用来指明正在操作的文件中读或写的位置,文件头处为0。fpos_t在不同的平台下有不同的类型。 在windows下,fpos_t是一个64位整数,可以直接赋值,如fpos_t = 12。 在linux下,fpos_t是一个结构体,定义为:
【返回值】成功返回0,失败返回非0,并设置errno。 【实例】window上应用fgetpos函数取得当前文件的指针所指的位置。
The file pointer is at byte 14 The file pointer is at byte 3 首先,程序以读写方式打开一个名为test.txt的文件,并把字符串"This is a test"写入文件。注意:字符串共14个字节,地址为0~13。用fwrite函数写入后,文件指针自动指向文件最后一个字节的下一个位置。即这时的fp的值应该是14。 再用fgetpos函数取得指针位置并存入&pos所指向的对象,此时, pos中的内容为14。然后在屏幕上显示出The file pointer is at byte 14。 再用fseek函数重设文件指针的位置,让fp的值为3,即指向文件中第4个字节。 再次取得指针位置并存入&pos所指向的对象。然后在屏幕上显示出The file pointer is at byte 3。 注意:在linux下,不能这样定义pos: fpos_t * pos; fgetpos(fp,pos); 必须这样定义: fpos_t pos; fgetpos(fp,&pos); 因为pos必须是一个分配好内存空间的参数。第一种方式仅仅是定义了一个指针,并没有分配空间。如果改为下面的定义方式,则可以编译通过: fpos_t * pos; pos = (fpos_t)malloc(12); fgetpos(fp,pos); |
|