Aracılığıyla paylaş


ftell, _ftelli64

Dosya işaretçisinin geçerli konumunu alır.

Sözdizimi

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

Parametreler

stream
Hedef FILE yapı.

Dönüş değeri

ftell ve _ftelli64 geçerli dosya konumunu döndürür. tarafından ftell döndürülen ve _ftelli64 değeri, metin modunda açılan akışlar için fiziksel bayt uzaklığını yansıtmayabilir çünkü metin modu satır başı akış çevirisine neden olur. Dosya konumlarına doğru şekilde dönmek için ile fseek veya _ftelli64 ile _fseeki64 kullanınftell. Hatada ftell ve _ftelli64 Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırın. Yürütmenin devam etmesi için izin verilirse, bu işlevler -1L döndürür ve içinde ERRNO.Htanımlanan iki sabitin birine ayarlanırerrno. Sabit, EBADF bağımsız değişkenin stream geçerli bir dosya işaretçisi değeri olmadığı veya açık bir dosyaya başvurmadığı anlamına gelir. EINVAL işlevine geçersiz stream bir bağımsız değişken geçirildiği anlamına gelir. Arama yapmayan cihazlarda (terminaller ve yazıcılar gibi) veya açık bir dosyaya başvurmadığında stream dönüş değeri tanımlanmamıştır.

İade kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

ftell ve _ftelli64 işlevleri, ile streamilişkili dosya işaretçisinin (varsa) geçerli konumunu alır. Konum, akışın başına göre bir uzaklık olarak ifade edilir.

Bir dosya veri eklemek için açıldığında, geçerli dosya konumu bir sonraki yazma işleminin gerçekleşeceği yere göre değil, son G/Ç işlemine göre belirlenir. Örneğin, ekleme için bir dosyanın açıldığını ve son işlemin okundu olduğunu varsayalım. Dosya konumu, sonraki yazma işleminin başlayacağı nokta değil, sonraki okuma işleminin başlatıldığı noktadır. (Dosya ekleme için açıldığında, dosya konumu herhangi bir yazma işleminden önce dosyanın sonuna taşınır.) Ekleme için açılan bir dosyada henüz G/Ç işlemi gerçekleşmediyse, dosya konumu dosyanın başlangıcıdır.

Metin modunda CTRL+Z, girişte dosya sonu karakteri olarak yorumlanır. Okuma/yazma için açılan dosyalarda ve ilgili tüm yordamlarda, fopen dosyanın sonunda CTRL+Z tuşlarına basıp mümkünse kaldırın. Bunun nedeni, CTRL+Z ile biten bir dosyanın içinde ilerlemek için ve _fseeki64fseekveya _ftelli64 ve birleşiminin ftell kullanılması, dosyanın sonuna yakın bir yere doğru düzgün davranmanıza neden ftell olabilir._ftelli64

Bu işlev, yürütme sırasında çağıran iş parçacığını kilitler ve bu nedenle iş parçacığı güvenlidir. Kilitlenmeyen bir sürüm için bkz _ftell_nolock. .

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

İşlev Gerekli başlık İsteğe bağlı üst bilgiler
ftell <stdio.h> <errno.h>
_ftelli64 <stdio.h> <errno.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// 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

Ayrıca bkz.

Akış G/Ç
fopen, _wfopen
fgetpos
fseek, _fseeki64
_lseek, _lseeki64