Sdílet prostřednictvím


ftell, _ftelli64

Získá aktuální pozici ukazatele souboru.

Syntaxe

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

Parametry

stream
Cílová FILE struktura

Vrácená hodnota

ftell a _ftelli64 vrátí aktuální pozici souboru. Hodnota vrácená ftell a _ftelli64 nemusí odrážet fyzický posun bajtů datových proudů otevřených v textovém režimu, protože textový režim způsobuje překlad návratového řádku řádku. Použijte ftell s fseek nebo _ftelli64 s _fseeki64 k tomu, abyste se vrátili do umístění souborů správně. Při chybě ftell a _ftelli64 vyvolání neplatné obslužné rutiny parametru, jak je popsáno v ověření parametru. Pokud je provádění povoleno pokračovat, tyto funkce vrátí -1L a nastaví errno na jednu ze dvou konstant definovaných v ERRNO.H. Konstanta EBADF znamená stream , že argument není platná hodnota ukazatele souboru nebo neodkazuje na otevřený soubor. EINVAL znamená, že funkci byl předán neplatný stream argument. Na zařízeních, která nemohou hledat (například terminály a tiskárny), nebo pokud stream neodkazuje na otevřený soubor, návratová hodnota není definována.

Další informace o návratových kódech naleznete v tématu errno, _doserrno, _sys_errlista _sys_nerr.

Poznámky

_ftelli64 Funkce ftell načítají aktuální pozici ukazatele souboru (pokud existuje) přidruženého stream. Pozice je vyjádřena jako posun vzhledem k začátku datového proudu.

Při otevření souboru pro připojení dat je aktuální pozice souboru určena poslední vstupně-výstupní operací, nikoli umístěním dalšího zápisu. Předpokládejme například, že je soubor otevřen pro připojení a poslední operace byla přečtená. Umístění souboru je bod, kde by se spustila další operace čtení, a ne místo, kde by se spustil další zápis. (Při otevření souboru pro připojení se pozice souboru před jakoukoli operací zápisu přesune na konec souboru.) Pokud u souboru otevřeného pro připojení ještě nedošlo k žádné vstupně-výstupní operaci, pozice souboru je začátek souboru.

V textovém režimu se kombinace kláves CTRL+Z při zadávání interpretuje jako znak konce souboru. V souborech otevřených pro čtení a zápis fopen a všechny související rutiny kontrolují ctrl+Z na konci souboru a pokud je to možné, odeberte ho. Je to proto, že se pomocí kombinace ftell a fseeknebo _ftelli64 a a _fseeki64) přesunu v souboru, který končí klávesou CTRL+Z, může způsobit ftell nebo _ftelli64 se chovat nesprávně blízko konce souboru.

Tato funkce uzamkne volající vlákno během provádění a je proto bezpečné pro přístup z více vláken. Informace o nezamykání verze najdete v tématu _ftell_nolock.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Function Požadovaný hlavičkový soubor Volitelná záhlaví
ftell <stdio.h> <errno.h>
_ftelli64 <stdio.h> <errno.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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 );
   }
}
Position after trying to read 100 bytes: 100

Viz také

Vstupně-výstupní operace streamu
fopen, _wfopen
fgetpos
fseek, _fseeki64
_lseek, _lseeki64