fgetpos
Ruft den Dateipositionsindikator eines Streams ab
Syntax
int fgetpos(
FILE *stream,
fpos_t *pos
);
Parameter
stream
Der Zielstream
pos
Speicher des Positionsindikators
Rückgabewert
fgetpos
gibt bei Erfolg 0 zurück. Wenn ein Fehler auftritt, wird ein Wert ungleich Null zurückgegeben und auf eine der folgenden Manifestkonstanten (definiert in STDIO) festgelegt errno
. H): EBADF
, das bedeutet, dass der angegebene Datenstrom kein gültiger Dateizeiger ist oder nicht darauf zugegriffen werden kann, oder EINVAL
, was bedeutet, dass der stream
Wert oder der Wert pos
ungültig ist, z. B. wenn es sich um einen Nullzeiger handelt. Wenn stream
oder pos
ein NULL
Zeiger ist, ruft die Funktion den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben.
Hinweise
Die Funktion fgetpos
ruft den aktuellen Wert des Dateipositionsindikators des stream
-Arguments ab und speichert es in dem Objekt, auf das pos
verweist. Die Funktion fsetpos
kann die in pos
gespeicherten Informationen später verwenden, um den Zeiger des stream
-Arguments auf die Position zurückzusetzen, die er zum Zeitpunkt des Aufrufs von fgetpos
inne hatte. Der Wert pos
wird in einem internen Format gespeichert und dient nur zur Verwendung durch fgetpos
und fsetpos
.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Funktion | Erforderlicher Header |
---|---|
fgetpos |
<stdio.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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 );
}
Eingabe: crt_fgetpos.txt
fgetpos gets a stream's file-position indicator.
Ausgabe: crt_fgetpos.txt
after fgetpos: gets a stream
after fsetpos: gets a stream