fgetpos
Ottiene un indicatore di posizione file del flusso.
Sintassi
int fgetpos(
FILE *stream,
fpos_t *pos
);
Parametri
stream
Flusso di destinazione.
pos
Archiviazione dell'indicatore di posizione.
Valore restituito
Se l'esito è positivo, fgetpos
restituisce 0. In caso di errore, restituisce un valore diverso da zero e imposta errno
su una delle costanti manifesto seguenti (definite in STDIO. H): EBADF
, il che significa che il flusso specificato non è un puntatore di file valido o non è accessibile oppure EINVAL
, ovvero il stream
valore o il valore di pos
non è valido, ad esempio se è un puntatore Null. Se stream
o pos
è un NULL
puntatore, la funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri.
Osservazioni:
La funzione fgetpos
ottiene il valore corrente dell'indicatore della posizione file dell'argomento stream
e lo archivia nell'oggetto a cui punta pos
. La funzione fsetpos
può successivamente usare le informazioni archiviate in pos
per reimpostare il puntatore dell'argomento stream
sulla propria posizione al momento in cui è stata chiamata fgetpos
. Il valore pos
è archiviato in un formato interno e può essere usato solo da fgetpos
e fsetpos
.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
fgetpos |
<stdio.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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 );
}
Input: crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
Output crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream