fgetpos
获取流的文件位置指示符。
int fgetpos(
FILE *stream,
fpos_t *pos
);
参数
stream
目标流。pos
位置指示符存储。
返回值
如果成功, fgetpos 返回 0。 在失败,将返回非零值并将 errno 到以下清单常数之一 (定义在 STDIO.H): EBADF,这意味着指定的流不是有效的文件指针也无法访问或 EINVAL,这意味着 stream 值或 pos 的值无效,例如,如果其中一个是一个 null 指针。 如果 stream 或 pos 是 NULL 指针,该函数调用的参数无效处理程序,如 参数验证所述。
备注
fgetpos 函数在 pos所指向的对象获取 stream 参数的文件位置指示符的当前值并将其存储。 ,在 fgetpos 每次调用, fsetpos 功能以后可以使用在 pos 存储的信息重置 stream 参数的指针到其位置。 pos 值在内部格式存储和仅供使用。 fgetpos 和 fsetpos。
要求
功能 |
必需的头 |
---|---|
fgetpos |
stdio.h |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
示例
// crt_fgetpos.c
// This program uses fgetpos and fsetpos to
// return to a location in a file.
#include <stdio.h>
int main( void )
{
FILE *stream;
fpos_t pos;
char buffer[20];
if( fopen_s( &stream, "crt_fgetpos.txt", "rb" ) ) {
perror( "Trouble opening file" );
return -1;
}
// Read some data and then save the position.
fread( buffer, sizeof( char ), 8, stream );
if( fgetpos( stream, &pos ) != 0 ) {
perror( "fgetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fgetpos: %.13s\n", buffer );
// Restore to old position and read data
if( fsetpos( stream, &pos ) != 0 ) {
perror( "fsetpos error" );
return -1;
}
fread( buffer, sizeof( char ), 13, stream );
printf( "after fsetpos: %.13s\n", buffer );
fclose( stream );
}
输入:crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
输出 crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream