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