fgetpos
Obtiene un indicador de posición de archivo de la secuencia.
Sintaxis
int fgetpos(
FILE *stream,
fpos_t *pos
);
Parámetros
stream
Secuencia de destino.
pos
Almacenamiento del indicador de posición.
Valor devuelto
Si la operación se realiza correctamente, fgetpos
devuelve 0. En caso de error, devuelve un valor distinto de cero y establece errno
en una de las siguientes constantes de manifiesto (definidas en STDIO. H): EBADF
, lo que significa que la secuencia especificada no es un puntero de archivo válido o no es accesible, o EINVAL
, lo que significa que el stream
valor o el valor de pos
no es válido, como si alguno de ellos es un puntero nulo. Si stream
o pos
es un NULL
puntero, la función invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros.
Comentarios
La función fgetpos
obtiene el valor actual del indicador de posición de archivo del argumento stream
y lo almacena en el objeto al que apunta pos
. La función fsetpos
puede usar más adelante información almacenada en pos
para restablecer el puntero del argumento stream
a su posición en el momento en que se ha llamado a fgetpos
. El valor pos
se almacena en un formato interno que está previsto para uso exclusivo de fgetpos
y fsetpos
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Función | Encabezado necesario |
---|---|
fgetpos |
<stdio.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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.
Salida: crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream