C'de Dosya Okuma: fopen ve fread Adım Adım

# C'de Dosya Okuma: fopen ve fread Adım Adım

Dosya işlemleri programlamada sık ihtiyaç duyduğumuz bir konudur. Veri kaydetmek, okumak veya işlemek için dosyaları kullanırız. C dilinde bu işler `fopen` ve `fread` fonksiyonlarıyla yapılır.

`fopen` fonksiyonu bir dosyayı açar ve dosya üzerinde işlem yapabilmek için bir işaretçi (pointer) döndürür. Dosya bulunamazsa veya açılamaz ise NULL döndürür.

Syntax:

1FILE *fopen(const char *dosya_adi, const char *mod);

- dosya_adi: Açılacak dosyanın yolu
- mod: Dosya açılış modu
- `"r"`, Okuma (dosya var olmalı)
- `"w"`, Yazma (dosya yoksa oluşturur, varsa siler)
- `"a"`, Ekleme (dosya sonuna ekler)
- `"rb"`, `"wb"`, İkili (binary) modlar

`fread` açılan dosyadan belirtilen sayıda veri okur ve bir bellek alanına yerleştirir.

Syntax:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1size_t fread(void *ptr, size_t boyut, size_t adet, FILE *dosya);

- ptr: Okunan verinin konulacağı bellek adresi
- boyut: Her bir veri parçasının bayt cinsinden boyutu
- adet: Kaç adet veri parçası okunacağı
- dosya: fopen tarafından döndürülen FILE işaretçisi

Önce test için basit bir dosya oluşturalım. `test.txt` adında bir dosya oluşturup içine şu satırları yazalım:

1Merhaba Dünya
2C Programlama

Şimdi bu dosyayı okuyacak programı yazalım:

1 <stdio.h>
2 <stdlib.h>
3
4int main() {
5FILE *dosya;
6char buffer[100];
7
8// Dosyayı okuma modunda aç
9dosya = fopen("test.txt", "r");
10
11// Dosya açılıp açılmadığını kontrol et
12if (dosya == NULL) {
13printf("Hata: Dosya açılamadı!\n");
14return 1;
15}
16
17// Dosyadan 99 karakter oku (buffer'a sığsın diye)
18size_t okunan = fread(buffer, 1, 99, dosya);
19buffer[okunan] = '\0'; // String sonlandır
20
21printf("Okunan veri:\n%s\n", buffer);
22printf("Okunan bayt sayısı: %zu\n", okunan);
23
24// Dosyayı kapat
25fclose(dosya);
26
27return 0;
28}

Beklenen Çıktı:

1Okunan veri:
2Merhaba Dünya
3C Programlama
4Okunan bayt sayısı: 27

- Dosya işleminden sonra mutlaka `fclose()` ile dosyayı kapatmalısın. Aksi halde bellek sızıntısı oluşur.
- `fopen` NULL dönüş değerini her zaman kontrol et; dosya olmayabilir veya izin problemi yaşanabilir.
- `fread` okunan bayt sayısını döndürür; beklediğin kadar okunamadıysa kontrol et.
- Buffer taşması engellemek için `fread` parametrelerini doğru ayarla.

Bu adımları takip ederek C'de güvenli dosya okuma yapabilirsin.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz