ftell, _ftelli64

Mendapatkan posisi penunjuk file saat ini.

Sintaks

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

Parameter

stream
Struktur target FILE .

Nilai hasil

ftell dan _ftelli64 mengembalikan posisi file saat ini. Nilai yang dikembalikan oleh ftell dan _ftelli64 mungkin tidak mencerminkan offset byte fisik untuk aliran yang dibuka dalam mode teks, karena mode teks menyebabkan pengangkutan terjemahan umpan baris kembali. Gunakan ftell dengan fseek atau _ftelli64 dengan _fseeki64 untuk kembali ke lokasi file dengan benar. Jika terjadi kesalahan, ftell dan _ftelli64 panggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini mengembalikan -1L dan diatur errno ke salah satu dari dua konstanta, yang didefinisikan dalam ERRNO.H. Konstanta EBADF berarti stream argumen bukan nilai penunjuk file yang valid atau tidak merujuk ke file terbuka. EINVAL berarti argumen yang tidak valid stream diteruskan ke fungsi . Pada perangkat yang tidak dapat mencari (seperti terminal dan printer), atau ketika stream tidak merujuk ke file terbuka, nilai yang dikembalikan tidak ditentukan.

Untuk informasi selengkapnya tentang kode pengembalian, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Fungsi ftell dan _ftelli64 mengambil posisi pointer file saat ini (jika ada) yang terkait dengan stream. Posisi dinyatakan sebagai offset relatif terhadap awal aliran.

Ketika file dibuka untuk menambahkan data, posisi file saat ini ditentukan oleh operasi I/O terakhir, bukan dengan tempat penulisan berikutnya akan terjadi. Misalnya, asumsikan file dibuka untuk penambah dan operasi terakhir adalah baca. Posisi file adalah titik di mana operasi baca berikutnya akan dimulai, bukan di mana penulisan berikutnya akan dimulai. (Ketika file dibuka untuk ditambahkan, posisi file dipindahkan ke akhir file sebelum operasi tulis apa pun.) Jika belum ada operasi I/O yang terjadi pada file yang dibuka untuk ditambahkan, posisi file adalah awal file.

Dalam mode teks, CTRL+Z ditafsirkan sebagai karakter akhir file pada input. Dalam file yang dibuka untuk membaca/menulis, fopen dan semua rutinitas terkait memeriksa CTRL+Z di akhir file dan menghapusnya jika memungkinkan. Ini karena menggunakan kombinasi ftell dan , atau _ftelli64 dan , _fseeki64untuk berpindah dalam file yang berakhir dengan CTRL+Z dapat menyebabkan ftell atau _ftelli64 berperilaku tidak tepat di fseekdekat akhir file.

Fungsi ini mengunci utas panggilan selama eksekusi dan oleh karena itu aman untuk utas. Untuk versi non-penguncian, lihat _ftell_nolock.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Function Header yang diperlukan Header opsional
ftell <stdio.h> <errno.h>
_ftelli64 <stdio.h> <errno.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

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

Baca juga

Streaming I/O
fopen, _wfopen
fgetpos
fseek, _fseeki64
_lseek, _lseeki64