😈
ReverseMe
  • Introduction
  • References
  • ReverseMe
    • Introduction
      • What is Reverse Engineering?
      • Legality of Reverse Engineering
      • Reverse Engineering Communities
  • Programming Language
    • C
      • Basic
        • Pointer
        • Casting
      • Reference
        • stdio.h
          • fclose()
          • fopen()
          • fseek()
          • ftell()
          • fgetc()
          • fgets()
          • fread()
          • fprintf()
          • fwrite()
          • printf()
          • putchar()
          • puts()
          • sprintf()
          • snprintf()
        • stdlib.h
          • malloc()
          • calloc()
          • realloc()
          • free()
          • rand()
          • srand()
        • string.h
          • strcat()
          • strncat()
          • strcmp()
          • strncmp()
          • strcpy()
          • strncpy()
        • time.h
          • time()
  • Reversing Fundamentals
    • Stripped and Unstripped
  • Tools
    • file
    • strings
    • ltrace
    • ghidra
  • CTF Writeups
    • HackTheBox Challenges
      • Baby RE
      • You Cant C Me
  • ABOUT ME
    • Mail
    • LinkedIn
    • GitHub
Powered by GitBook
On this page
  • Sintaks
  • Contoh Penggunaan
  • 1. Menampilkan posisi saat ini
  • 2. Menggunakan ftell() untuk mengetahui ukuran file
  • Bagaimana ftell() Bekerja?
  1. Programming Language
  2. C
  3. Reference
  4. stdio.h

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

#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().

Previousfseek()Nextfgetc()

Last updated 2 months ago

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

fseek()