fseek()

Memindahkan posisi dalam file dalam C

Fungsi fseek() digunakan untuk memindahkan posisi baca/tulis (file pointer) ke lokasi tertentu dalam file. Ini berguna untuk melompat ke bagian tertentu dalam file saat membaca atau menulis data.

Sintaks

int fseek(FILE *file, long offset, int origin);
  • file âžœ Pointer ke file yang sudah dibuka (FILE *).

  • offset âžœ Jumlah byte yang ingin dipindahkan.

  • origin âžœ Posisi referensi awal (SEEK_SET, SEEK_CUR, SEEK_END).

  • Mengembalikan 0 jika sukses, atau -1 jika gagal.

Mode origin dalam fseek()

Mode
Deskripsi

SEEK_SET

Memulai dari awal file (offset dihitung dari awal).

SEEK_CUR

Memulai dari posisi saat ini dalam file.

SEEK_END

Memulai dari akhir file (offset dihitung mundur).

Contoh Penggunaan

data.txt
Hello, World!

1. Melompat ke posisi tertentu dalam file

#include <stdio.h>

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

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

    fseek(file, 5, SEEK_SET);  // Lompat ke byte ke-5 dari awal file

    char c = fgetc(file);  // Baca karakter di posisi baru
    printf("Karakter di posisi ke-5: %c\n", c);

    fclose(file);
    return 0;
}

Hasilnya:

  • fseek(file, 5, SEEK_SET); âžœ Memindahkan posisi baca ke byte ke-5 dari awal.

  • fgetc(file); âžœ Membaca karakter setelah fseek().

2. Membaca data dari posisi tertentu

#include <stdio.h>

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

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

    fseek(file, -6, SEEK_END);  // Lompat ke 6 byte sebelum akhir file

    char c = fgetc(file);
    printf("Karakter 6 byte sebelum akhir: %c\n", c);

    fclose(file);
    return 0;
}
  • fseek(file, -6, SEEK_END); âžœ Bergerak mundur 6 byte dari akhir file.

  • Membaca karakter di posisi itu dengan fgetc().

3. Menggunakan SEEK_CUR untuk melompati bagian tertentu

#include <stdio.h>

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

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

    fgetc(file); // Baca karakter pertama
    fseek(file, 2, SEEK_CUR);  // Lompat 2 karakter setelah posisi saat ini
    char c = fgetc(file);
    
    printf("Karakter setelah lompat: %c\n", c);

    fclose(file);
    return 0;
}
  • Membaca 1 karakter dulu (fgetc(file)).

  • fseek(file, 2, SEEK_CUR); âžœ Lompat 2 karakter ke depan dari posisi saat ini.

Last updated