08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

typedef struct {<br />

char name[20];<br />

char fname[20];<br />

int no;<br />

}Person;<br />

int main()<br />

{<br />

FILE *f;<br />

Person per = {"Necati", "Ergin", 325);<br />

}<br />

f = fopen("person.dat", "wb");<br />

/*********************************/<br />

fwrite(&per, sizeof(Person), 1, f);<br />

/****/<br />

fwrite işlevi sayıları bellekteki görüntüsü ile dosyaya yazar. Yani fprintf işlevi gibi formatlı<br />

yazmaz. Örneğin DOS işletim sisteminde:<br />

int i = 1535;<br />

fwrite(&i, sizeof(int), 1, f);<br />

Burada dosya yazdırılırsa 2 byte uzunluğunda rastgele karakterler görünür. Çünkü DOS<br />

işletim sisteminde int türü 2 byte uzunluğundadır. Bizim gördüğümüz ise 1525'in rastgele<br />

olan byte'larıdır. Bilgileri ASCII karşılıkları ile dosyaya yazmak için fprintf işlevi<br />

kullanılabilir.<br />

fread ve fwrite işlevleri bellekteki bilgileri aktardığına göre dosyaların da binary modda<br />

açılmış olması uygun olur.<br />

#include <br />

#include <br />

int main()<br />

{<br />

FILE *f;<br />

int i;<br />

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};<br />

int b[10];<br />

if ((f = fopen("data", w+b")) == NULL) {<br />

printf("cannot open file...\n");<br />

exit(EXIT_FAILURE);<br />

}<br />

fwrite (a, sizeof(int), 10, f);<br />

fseek(f, 0, SEEK_SET);<br />

fread(b, sizeof(int), 10, f);<br />

for (i = 0; i < 10; ++i)<br />

printf("%d\n", b[i]);<br />

fclose(f);<br />

}<br />

return 0;<br />

fread ve fwrite işlevlerinin geri dönüş değerleri üçüncü parametresi ile belirtilen okunan<br />

ya da yazılan parça sayısıdır. Örneğin<br />

n = fread(a, sizeof(int), 10, f);<br />

468

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!