ftell()

Mengetahui posisi saat ini dalam file dalam C

Fungsi ftell() digunakan untuk mendapatkan posisi baca/tulis saat ini dalam file, dihitung dalam byte dari awal file. Fungsi ini sangat berguna untuk:

  • Mengetahui berapa banyak data yang sudah dibaca.

  • Menghitung ukuran file (dengan menggabungkannya dengan fseek()).

Sintaks

  • file âžœ Pointer ke file yang sudah dibuka (FILE *).

  • Mengembalikan posisi saat ini dalam file (dalam byte) jika berhasil.

  • Mengembalikan -1L jika terjadi kesalahan.

Contoh Penggunaan

data.txt
Hello, World!

1. Menampilkan posisi saat ini

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");

    if (file == NULL) {
        printf("File tidak ditemukan!\n");
        return 1;
    }

    // Posisi awal harus 0
    long posisiAwal = ftell(file);
    printf("Posisi awal: %ld\n", posisiAwal);

    // Membaca satu karakter, sehingga posisi bertambah 1
    fgetc(file);
    long posisiSetelahBaca = ftell(file);
    printf("Posisi setelah membaca 1 karakter: %ld\n", posisiSetelahBaca);

    fclose(file);
    return 0;
}

Hasilnya:

Posisi awal: 0
Posisi setelah membaca 1 karakter: 1

2. Menggunakan ftell() untuk mengetahui ukuran file

Kita dapat memindahkan pointer ke akhir file dengan fseek() lalu menggunakan ftell() untuk mendapatkan ukuran file:

#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");

    if (file == NULL) {
        printf("File tidak ditemukan!\n");
        return 1;
    }

    // Pindahkan pointer ke akhir file
    fseek(file, 0, SEEK_END);

    // Ukuran file adalah posisi akhir
    long ukuran = ftell(file);
    printf("Ukuran file: %ld byte\n", ukuran);

    fclose(file);
    return 0;
}

Hasilnya:

Ukuran file: 13 byte

Bagaimana ftell() Bekerja?

  • Posisi awal: Saat file baru dibuka untuk membaca, posisi adalah 0.

  • Setelah membaca data: Posisi akan bertambah sesuai dengan jumlah byte yang telah dibaca.

  • Setelah fseek(): ftell() mengembalikan posisi baru yang telah ditentukan oleh fseek().

Last updated