Freigeben über


ftell, _ftelli64

Ruft die aktuelle Position des Dateizeigers ab.

long ftell( 
   FILE *stream 
);
__int64 _ftelli64( 
   FILE *stream 
);

Parameter

  • stream
    Ziel FILE Struktur.

Rückgabewert

ftell und _ftelli64 geben die Position der aktuellen Datei zurück.Der Wert, der von ftell und _ftelli64 zurückgegeben wird, spiegelt möglicherweise nicht den physischen Byteoffset für die Streams, die im Textmodus geöffnet sind, da Textmodus Wagenrücklauf/Zeilenvorschub-Übersetzung verursacht.Verwenden Sie ftell mit fseekoder_ftelli64mit_fseeki64 , um den Speicherorten ordnungsgemäß zurückgegeben werden soll.Bei Fehler_ftelli64 undrufen ftellder ungültige Parameter für ein, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen festlegen und 1L – errno bis eine von zwei Konstanten zurück, definiert in ERRNO.H.Die EBADF Konstante bedeutet, dass das Argument kein gültiger Wert für den Dateizeiger stream ist oder keine geöffnete Datei verweist.EINVAL bedeutet, dass ein ungültiges stream-Argument für die Funktion übergeben wurde.Auf den Geräten, die vom Suche (wie Terminals und Druckern) oder nicht stream verweist, wenn keine Datei öffnen, wird der Rückgabewert nicht definiert.

Weitere Informationen finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr Weitere Informationen über diese und andere Rückgabecodes.

Hinweise

Die ftell_ftelli64Funktionen und rufen die aktuelle Position des Dateizeigers (sofern vorhanden)abstreamzugeordnet ist*.* Die Position wird z. B. ein Offset relativ zum Anfang des Streams ausgedrückt.

Beachten Sie, dass, wenn eine Datei für das Anfügen von Daten geöffnet ist, wird die Position der aktuellen Datei vom letzten E/A-Vorgang bestimmt ist und nicht durch auftreten würden die folgenden Stelle schreiben.Wenn z. B. eine Datei für ein Angefügte geöffnet ist und der letzte Vorgang ein Lesevorgang war, ist die Dateiposition der Punkt, an dem der Lesevorgang beginnen würde folgenden nicht an welcher Stelle schreiben die folgenden, würde starten.(Wenn eine Datei nur zum Anhängen geöffnet ist, wird die Dateiposition auf Dateiende vor jedem Schreibvorgang) verschoben. Wenn kein E/A-Vorgang bisher für eine Datei erfolgt ist, die zum Anhängen geöffnet ist, ist die Dateiposition der Anfang der Datei.

STRG+Z wird im Textmodus als Dateiende Zeichen bei der Eingabe interpretiert.In den Dateien, die für das Lesen/Schreiben geöffnet sind, fopen entfernen und alle verwandten Routinen für STRG+Z am Ende der Datei und sie, sofern dies möglich ist.Dies geschieht, weil die Anwendung möglicherweise der Kombination von ftell und fseek oder _ftelli64 und _fseeki64die Kommunikation innerhalb einer Datei, die mit STRG+Z beendet, oder _ftelli64ftell bewirkt, dass sich in der Nähe des Endes der Datei nicht ordnungsgemäß verhalten.

Diese Funktion sperrt den aufrufenden Thread während der Ausführung und daher threadsicher.Bei einer nicht sperrend - Version finden Sie unter _ftell_nolock.

Anforderungen

Funktion

Erforderlicher Header

Optionale Header

ftell

<stdio.h>

<errno.h>

_ftelli64

<stdio.h>

<errno.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

// crt_ftell.c
// This program opens a file named CRT_FTELL.C
// for reading and tries to read 100 characters. It
// then uses ftell to determine the position of the
// file pointer and displays this position.
 

#include <stdio.h>

FILE *stream;

int main( void )
{
   long position;
   char list[100];
   if( fopen_s( &stream, "crt_ftell.c", "rb" ) == 0 )
   {
      // Move the pointer by reading data: 
      fread( list, sizeof( char ), 100, stream );
      // Get position after read: 
      position = ftell( stream );
      printf( "Position after trying to read 100 bytes: %ld\n",
              position );
      fclose( stream );
   }
}
  

.NET Framework-Entsprechung

System::EA::FileStream::Position

Siehe auch

Referenz

Stream E/A

fopen, _wfopen

fgetpos

fseek, _fseeki64

_lseek, _lseeki64