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:
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ünya2C ProgramlamaŞimdi bu dosyayı okuyacak programı yazalım:
1#include <stdio.h>2#include <stdlib.h>34int main() {5FILE *dosya;6char buffer[100];78// Dosyayı okuma modunda aç9dosya = fopen("test.txt", "r");1011// Dosya açılıp açılmadığını kontrol et12if (dosya == NULL) {13printf("Hata: Dosya açılamadı!\n");14return 1;15}1617// Dosyadan 99 karakter oku (buffer'a sığsın diye)18size_t okunan = fread(buffer, 1, 99, dosya);19buffer[okunan] = '\0'; // String sonlandır2021printf("Okunan veri:\n%s\n", buffer);22printf("Okunan bayt sayısı: %zu\n", okunan);2324// Dosyayı kapat25fclose(dosya);2627return 0;28}Beklenen Çıktı:
1Okunan veri:2Merhaba Dünya3C Programlama4Okunan 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.
0 yorum