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.H
tanı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_errlist
ve _sys_nerr
.
Açıklamalar
ftell
ve _ftelli64
işlevleri, ile stream
iliş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 _fseeki64
fseek
veya _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