7 Mart 2017 Salı

fread() ve fwrite() Fonksiyonları



Verileri dosyaya yazma ve dosyadan okuma işlemlerinde fwrite() ve fread() fonksiyonları da kullanılabilir.
Daha önce kullandığımız fprintf() ve fscanf() fonksiyonları dosyadan veri okuma ve dosyaya veri yazma işlemlerinde veriler üzerinde değişim yaparak çalıştığından, fread() ve fwrite() fonksiyonlarını kullanmak daha pratiktir.


fprintf() fonksiyonunu kullanarak bir dosyaya sayı (int) yazarken, sayının dosyanın ASCII metnine çevrilmesi gerekir.
    fprintf(fptr ,"%d", sayi );

Yine fscanf() fonksiyonu ile bir dosyadan bir sayı okurken, sayının fscanf() fonksiyonunun dahili format yapısına çevrilmesi gerekir.
    fscanf (fptr,"%d", &sayi);


size_t fread ( void *tampon-bellek,
            size_t boyut,
            size_t id1,
            FILE *fp);
fp ile gösterilen dosyadan okunan boyut yapısında id1 kadar değeri tampon-bellek ile gösterilen belleğe atar.
Burada, boyut ifadesi okunan verinin byte olarak değerini, id1 ifadesi ise kaç adet veri okunduğunu belirler.
fread() fonksiyonu okunan veri sayısını geri verir. Bu değer 0 ise, herhangi bir veri okunmamış demektir. Bu durumda, ya bir hata olmuştur ya da dosya sonu gelmiştir.

size_t fwrite (void *tampon-bellek,
            size_t boyut,
            size_t id1,
            FILE *fp);
fwrite() fonksiyonu, fread() fonksiyonunun yaptığı işlemin tam tersini yapar. fwrite() fonksiyonu, tampon-bellek ile gösterilen bellekte bulunan boyut yapısında id1 kadar değeri fp ile gösterilen dosyaya yazar. Burada, boyut parametresi yazılan byte olarak değerini, id1 parametresi ise kaç adet veri yazıldığını belirler.
fwrite() fonksiyonu yazılan veri sayısını geri verir. Sadece bir hata meydana geldiğinde bu değer id1 değerinden az olur.