fread()
Membaca data dari file dalam C
Fungsi fread()
digunakan untuk membaca blok data dari file ke dalam memori. Fungsi ini terutama berguna untuk membaca data biner, tetapi juga bisa digunakan untuk membaca data teks dalam blok.
Sintaks
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
ptr
➜ Pointer ke area memori tempat data akan disimpan.size
➜ Ukuran setiap elemen yang akan dibaca (dalam byte).count
➜ Jumlah elemen yang akan dibaca.stream
➜ Pointer ke file yang sudah dibuka.Mengembalikan jumlah elemen yang berhasil dibaca. Jika kurang dari
count
, bisa berarti terjadi EOF atau kesalahan.
Contoh Penggunaan
1. Membaca data biner dari file
Misalkan kita memiliki file biner data.bin
yang berisi array integer, dan kita ingin membaca 5 elemen.
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file = fopen("data.bin", "rb"); // Buka file dalam mode baca biner
if (file == NULL) {
printf("Gagal membuka file!\n");
return 1;
}
int data[5];
size_t elemenTerbaca = fread(data, sizeof(int), 5, file);
if (elemenTerbaca != 5) {
printf("Hanya berhasil membaca %zu elemen.\n", elemenTerbaca);
} else {
printf("Berhasil membaca 5 elemen:\n");
for (int i = 0; i < 5; i++) {
printf("%d ", data[i]);
}
printf("\n");
}
fclose(file);
return 0;
}
Hasilnya:
Berhasil membaca 5 elemen:
10 20 30 40 50
fread(data, sizeof(int), 5, file)
mencoba membaca 5 elemen, masing-masing sebesarsizeof(int)
, dari file.Jika jumlah elemen yang berhasil dibaca kurang dari 5, berarti terjadi EOF atau kesalahan baca.
Hasil dari
fread()
kemudian dibandingkan dengan jumlah elemen yang diharapkan untuk memastikan data telah dibaca dengan benar.
2. Membaca data teks dalam blok
Walaupun biasanya untuk data teks kita menggunakan fungsi seperti fgets()
, fread()
juga bisa digunakan untuk membaca blok data sekaligus.
Hello, World!
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file = fopen("data.txt", "r"); // Buka file teks
if (file == NULL) {
printf("Gagal membuka file!\n");
return 1;
}
char buffer[50];
size_t bytesTerbaca = fread(buffer, sizeof(char), sizeof(buffer) - 1, file);
buffer[bytesTerbaca] = '\0'; // Tambahkan karakter null untuk mengakhiri string
printf("Data yang dibaca:\n%s\n", buffer);
fclose(file);
return 0;
}
Hasilnya:
Data yang dibaca:
Hello, World!
fread(buffer, sizeof(char), sizeof(buffer) - 1, file)
membaca hingga49
karakter dari file teks ke dalambuffer
.Setelah pembacaan, kita menambahkan karakter null (
\0
) agarbuffer
menjadi string yang valid.Ini memungkinkan kita untuk membaca blok teks sekaligus.
Last updated