Freigeben über


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

Siehe auch

Stream-E/A
fsetpos