Bildirim
size_t fwrite(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ı ptr parametresi ile gösterilen bellekten okur stream parametresi ile gösterilen akışa yazar.
Akışın konum göstergesi, yazılan toplam bayt miktarı kadar (size * count) ile ileri alınır.
Bu fonksiyon akışa bir karakter dizisi yazarken karakter dizisinin sonuna otomatik olarak boş sonlandırıcı karakteri ('\0') eklemediğinden, yazılan karakter dizisi dosyadan okunduktan sonra, bu karakterin program ile ayrıca karakter dizisi sonuna eklenmesi gerekir.
Parametreler
ptr: Minimum boyutu size * count kadar olan bir bellek bloğunu gösteren işaretçidir.
size: Yazılacak olan her bir elemanın boyutunu gösterir.
count: Yazılacak eleman sayısını gösterir.
stream: Karakterlerin yazılacağı akışı tanımlayan FILE nesnesi işaretçisidir.
Dönüş değeri
Başarıyla yazılan toplam öğe sayısı geri döndürülür.
Eğer bu sayı count parametresinden farklıysa, yazma hatası fonksiyonun işlemi tamamlamasını engeller. Bu durumda, akış için hata göstergesi ayarlanır.
Eğer size veya count parametrelerinden birisi sıfır ise, fonksiyon sıfır değeri döndürür ve hata göstergesi 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 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.