函数
<cstdio>

fgetpos

int fgetpos ( FILE * stream, fpos_t * pos );
获取流中的当前位置
检索中的当前位置。

该函数用位置指示器所需的信息填充 pos 指向的 fpos_t 对象,以便通过调用 fsetpos恢复到其当前位置(以及多字节状态,如果是宽定向)。

ftell 函数可用于以整数值的形式检索中的当前位置。

参数

stream
指向一个 FILE 对象的指针,该对象标识了流。
pos
指向 fpos_t 对象的指针。
这应该指向一个已分配的对象。

返回值

成功时,该函数返回零。
如果出错,errno 会被设置为一个平台特定的正值,并且该函数返回一个非零值。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* fgetpos example */
#include <stdio.h>
int main ()
{
   FILE * pFile;
   int c;
   int n;
   fpos_t pos;

   pFile = fopen ("myfile.txt","r");
   if (pFile==NULL) perror ("Error opening file");
   else
   {
     c = fgetc (pFile);
     printf ("1st character is %c\n",c);
     fgetpos (pFile,&pos);
     for (n=0;n<3;n++)
     {
        fsetpos (pFile,&pos);
        c = fgetc (pFile);
        printf ("2nd character is %c\n",c);
     }
     fclose (pFile);
   }
   return 0;
}
可能的输出(当myfile.txt包含ABC):
1st character is A
2nd character is B
2nd character is B
2nd character is B


该示例打开myfile.txt,然后读取一次第一个字符,接着连续 3 次读取同一个第二个字符。

另见