İçeriğe geç

C Programlama Dosyalama 4

Fread() ve fwrite() Fonksiyonları

Verileri dosyaya yazma ve dosyadan veri okuma işlemlerinde fwrite() ve fread() fonksiyonlarınıda kullanabiliriz. 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);

Şimdi fread ve fwrite fonksiyonlarına geçelim…

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  iafadesi okunan verinin byte olarak değerini,id1 ifadesi ise kaç adet veri okunduğunu belirler.  Fread() fonksiyonu okunan veri sayısnı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.

Bir örnek ile fread ve fwrite fonksiyonlarını bitirelim.

Örnek:

Rewind() Fonksiyonu

Normalde bir dosyaya yazma işlemini tamamladıktan sonra, dosyayı tekrar okumak istediğimizde dosyayı kapatır ve dosyayı okuma modunda tekrar açarız.

fopen(“w”);

dosyaYazmaIslemleri();

fclose(fp);

fopen(“r”);

dosyaOkumaIslemleri();

fclose(fp);

Dosya açma kapatma işlemi yerine, bir dosyanın aktif konumunu dosya başına almak için rewind() fonksiyonunu kullanabilir.

void rewind (FILE *fp);

fp parametresi ile gösterilen dosyanın aktif konum göstergesini dosyanın başına alır.

Bu fonksiyon herhangi bir değer geri vermez. Çünkü, başarılı bir şekilde açılan dosyanın aktif konumu başa alınabilir.

Aşağıda bir restoranın hesaplarını tutan bir küçük program yazdık.

Örnek:

Fseek() Fonksiyonu

Şimdiye kadar yazdığımız bütün kodlarda, dosyadan yaptığımız okuma işlemlerini dosyanın başından sonuna doğru bir sıra dahilinde yaptık.

Bu tipte dosya erişimine Sıralı Erişim denilmektedir.

Bunun yanında, fseek() fonksiyonunu kullanarak dosyaların herhangi bir yerindeki bilgi okunabilir.

Bu tipte dosya erişimine Rastgele Erişim denilmektedir.

int fseek (FILE *fp, long ara, int yer);

fp parametresi işlem yapılan dosyayı,

ara parametresi yer ifadesinin gösterdiği değerin tanımladığı dosya konumundan, işlem yapılmak istenen yerin byte olarak uzaklığını verir.

yer parametresi dosyada arama işleminin başlayacağı yeri gösterir.

yer parametresinin alabileceği değerler aşağıdaki gibidir:

  • SEEK_SET (0) Aramayı dosya başından başlatır.
  • SEEK_CUR (1) Aramayı aktif konumdan başlatır.
  • SEEK_END (2) Aramayı dosya sonundan başlatır.

Remove() Fonksiyonu

Bir dosyayı silmek için kullanılır.

int remove (char *dosya-adı);

remove() fonksiyonu dosya-adı parametresi ile gösterilen dosyayı siler.

Başarılı bir şekilde sona erdiğinde 0 değerini, aksi takdirde 0 olmayan bir değer geri verir.

Tarih:Yazılım/Teknoloji

İlk Yorumu Siz Yapın

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir