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 />

if (fp == NULL) {<br />

printf("dosya açılamıyor\n");<br />

exit(EXIT_FAILURE);<br />

}<br />

while ((ch = fgetc(fp)) != EOF)<br />

printf("%d ", ch);<br />

/* ekran çıktısı<br />

65 65 65 65 65 26 65 65 65 65 65<br />

*/<br />

printf("\ndosya kapatıldı, Şimdi dosya text modunda açılarak<br />

yazdırılıyor\n");<br />

fp = fopen("deneme", "r");<br />

if (fp == NULL) {<br />

printf("dosya açılamıyor\n");<br />

exit(EXIT_FAILURE);<br />

}<br />

while ((ch = fgetc(fp)) != EOF)<br />

printf("%d ", ch);<br />

/* ekran çıktısı<br />

65 65 65 65 65 26 65 65 65 65 65<br />

*/<br />

fclose(fp);<br />

}<br />

return 0;<br />

EOF Durumu<br />

Dosyanın sonunda hiçbir özel karakter yoktur. İşletim sistemi dosyanın sonuna gelinip<br />

gelinmediğini dosyanın uzunluğuna bakarak anlayabilir. EOF (end of file) durumu dosya<br />

konum göstericisinin dosyada olmayan son karakteri göstermesi durumudur. EOF<br />

durumunda dosya konum göstericisinin offset değeri dosya uzunluğu ile aynı değerdedir.<br />

EOF durumunda dosyadan okuma yapılmak istenirse dosyadan okuma yapan işlevler<br />

başarısız olur. Ancak açış modu uygunsa dosyaya yazılabilir ve bu durumda dosyaya<br />

ekleme yapılır.<br />

Daha önce belirtildiği gibi C dilinde açılan bir dosya ile ilgili bilgiler FILE türünden bir yapı<br />

nesnesi içinde tutulur. Bu yapının elemanları dosyanın özellikleri hakkında bilgi verir. C<br />

programcısı bu yapının elemanlarının değerleri ile doğrudan ilgilenmez, zira fopen<br />

işlevinin geri dönüş değeri bu yapı nesnesini gösteren FILE yapısı türünden bir göstericidir<br />

ve C dilinin dosyalarla ilgili işlem yapan işlevleri çoğunlukla bu adresi parametre olarak<br />

alarak, istenilen dosya ile ilgili bilgilere ulaşır.<br />

Söz konusu FILE yapısının elemanlarından biri de, bayrak olarak kullanılan EOF<br />

bayrağıdır. Aslında derleyicilerin çoğunda int türden bir bayrağın yalnızca belirli bir bitidir.<br />

C dilinin dosyalarla ilgili işlem yapan bazı işlevleri EOF bayrağının değerini değiştirir. Yani<br />

EOF bayrağını birler ya da sıfırlarlar. Okuma yapan işlevler okumadan önce bu bayrağın<br />

değerine bakar. EOF bayrağı set edilmişse okuma başarılı olmaz. Başarılı bir okuma<br />

yapılabilmesi için EOF bayrağının yeniden sıfırlanması gerekir. Dosya açan işlevler FILE<br />

yapısındaki EOF bayrağını sıfırlar. Bu işlevler dışında dosya konum göstericisinin değerini<br />

değiştiren işlevler (fseek, rewind, fsetpos) ile clearerr işlevleri de EOF bitini sıfırlar.<br />

Formatlı ve Formatsız Yazım<br />

Bir dosyaya int türden değerlerin yazılacağını düşünelim. Dosyaya int türden bir değer<br />

yazmak ne anlama gelir? Örneğin int türünün 4 byte olduğu bir sistemde, dosyaya<br />

yazılacak tamsayı değeri 1234567890 olsun. Bu değer bir dosyaya yazılmak ve o<br />

dosyadan daha sonra geri okunmak istensin.<br />

Bu işlem fprintf işlevi ile yapılabilir, değil mi?<br />

466

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

Saved successfully!

Ooh no, something went wrong!