Bildirim
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
Açıklama
Her biri size parametre değeri kadar bayt boyutunda olan count parametre değeri kadar elemanı stream parametresi ile gösterilen akıştan okur ve bunları ptr parametresi ile gösterilen belleğe yükler.
Akışın konum göstergesi, okunan toplam bayt miktarı kadar (size * count) ile ileri alınır.
Bu fonksiyon akıştan bir karakter dizisi okuduğunda, karakter dizisinin sonuna otomatik olarak boş sonlandırıcı karakteri ('\0') eklemediğinden, bu karakterin program ile ayrıca eklenmesi gerekir.
Parametreler
ptr: Minimum boyutu size * count kadar olan bir bellek bloğunu gösteren işaretçidir.
size: Okunacak olan her bir elemanın boyutunu gösterir.
count: Okunacak eleman sayısını gösterir.
stream: Karakterlerin okunacağı akışı tanımlayan FILE nesnesi işaretçisidir.
Dönüş değeri
Başarıyla okunan toplam öğe sayısı geri döndürülür.
Eğer bu sayı count parametresinden farklıysa, okuma esnasında okuma hatası oluşur veya dosyanın sonuna ulaşılır. Her iki durumda da, sırasıyla ferror() ve feof() fonksiyonları ile kontrol edilebilen uygun gösterge ayarlanır.
Eğer size veya count parametrelerinden birisi sıfır ise, fonksiyon sıfır değeri döndürür ve hem akış durumu hem de ptr ile gösterilen bellek içeriği değişmeden kalır.
Örnek
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *fp;
char cdizi[]="Bilgisayar";
char gdizi[40];
if ((fp=fopen("dosya.txt", "w+")) == NULL) {
printf("Dosya açılamadı!\n");
exit(1);
}
if (fwrite(cdizi, strlen(cdizi), 1, fp) != 1) {
printf("Dosyaya yazma hatası!\n");
exit(1);
}
rewind(fp);
if (fread(gdizi, strlen(cdizi), 1, fp) != 1) {
printf("Dosyadan okuma hatası!\n");
exit(1);
}
/* Okunan karakter dizisi sonuna boş karakter ekleme */
gdizi[strlen(cdizi)] = '\0';
printf("%s", gdizi);
fclose(fp);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar:
Bilgisayar
Yukarıdaki program, yazma ve okuma modunda (w+) açtığı dosyaya fwrite() fonksiyonu ile yazdığı karakter dizisini, dosyanın konumunu başa aldıktan sonra, fread() fonksiyonu ile dosyadan okuyarak, sonuna boş karakter ekledikten sonra, ekrana yazar.