fgetpos
Obtém o indicador de posição do arquivo do fluxo.
Sintaxe
int fgetpos(
FILE *stream,
fpos_t *pos
);
Parâmetros
stream
O fluxo de destino.
pos
Armazenamento do indicador de posição.
Valor retornado
Se tiver êxito, fgetpos
retornará 0. Em caso de falha, ele retorna um valor diferente de zero e é definido errno
como uma das seguintes constantes de manifesto (definidas em STDIO. H): , EBADF
o que significa que o fluxo especificado não é um ponteiro de arquivo válido ou não está acessível, ou EINVAL
, o que significa que o stream
valor ou o valor de pos
é inválido, como se qualquer um for um ponteiro nulo. Se stream
or pos
for um NULL
ponteiro, a função invocará o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.
Comentários
A função fgetpos
obtém o valor atual do indicador de posição do arquivo do argumento stream
e o armazena no objeto apontado por pos
. A função fsetpos
pode, posteriormente, usar informações armazenadas em pos
para redefinir o ponteiro do argumento stream
para sua posição no momento em que fgetpos
foi chamado. O valor pos
é armazenado em um formato interno e é destinado para uso somente por fgetpos
e fsetpos
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Função | Cabeçalho necessário |
---|---|
fgetpos |
<stdio.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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 );
}
Entrada: crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
Saída crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream