fgetpos ()- 获取文件位置
格式
#include <stdio.h>
int fgetpos(FILE *stream, fpos_t *pos);语言级别
ANSI
线程安全
是
描述
fgetpos() 函数将与 流 关联的文件指针的当前位置存储到 pos指向的对象中。 pos 指向的值可在稍后调用 fsetpos() 以重新定位 流时使用。
返回值
如果成功, fgetpos() 函数将返回 0 ; 发生错误时,它将返回非零值并将 errno 设置为非零值。
errno 的值可以设置为:
- 值
- 含义
- EBADF
- 文件指针或描述符无效。
- Ebadseek
- 寻道操作的偏移量不正确。
- ENODEV
- 在错误的设备上尝试了操作。
- ENOTOPEN
- 文件未打开。
- ERECIO
- 文件已打开以进行记录 I/O。
- ESTDERR
- 无法打开
stderr。 - 埃斯特丁
- 无法打开
stdin。 - ESTDOUT
- 无法打开
stdout。 - EIOERROR
- 发生了不可恢复的I/O错误。
- EIORECERR
- 发生了可恢复的I/O错误。
使用 type=record打开的文件不支持 fgetpos() 函数。
示例
此示例打开文件 myfile 以进行读取,并将当前文件指针位置存储到变量 pos中。
#include <stdio.h>
FILE *stream;
int main(void)
{
int retcode;
fpos_t pos;
stream = fopen("mylib/myfile", "rb");
/* The value returned by fgetpos can be used by fsetpos */
/* to set the file pointer if 'retcode' is 0 */
if ((retcode = fgetpos(stream, &pos) == 0)
printf("Current position of file pointer found\n");
fclose(stream);
}