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 , _fseeki64
untuk berpindah dalam file yang berakhir dengan CTRL+Z dapat menyebabkan ftell
atau _ftelli64
berperilaku tidak tepat di fseek
dekat 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk