08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

#include <br />

#include <br />

#include <br />

#define FILENAME_LEN 256<br />

int main(int argc, char **argv)<br />

{<br />

FILE *f;<br />

char file_name[FILENAME_LEN];<br />

int ch, cval;<br />

int char_counter = 0;<br />

if (argc != 3) {<br />

printf("Dosya ismi : ");<br />

gets(file_name);<br />

printf("sayilacak karakter : ");<br />

cval = getchar();<br />

}<br />

else {<br />

strcpy(file_name, argv[1]);<br />

cval = *argv[2];<br />

}<br />

if ((f = fopen(file_name, "r")) == NULL) {<br />

printf("%s dosyasi acilamiyor!\n", file_name);<br />

exit(EXIT_FAILURE);<br />

}<br />

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

if (ch == cval)<br />

char_counter++;<br />

fclose(f);<br />

printf("%s dosyasinda %d adet %c karakteri var!\n", file_name,<br />

har_counter, ch);<br />

}<br />

return 0;<br />

Son olarak şunu da ekleyelim. fgetc bir işlevdir. Ancak stdio.h başlık dosyası içinde getc<br />

isimli bir de makro tanımlanmıştır. Derleyicilerin çoğu getc makrosuyla aynı isimli bir de<br />

işlev tanımlar. Ancak fgetc bir makro değil işlevdir. Makrolar konusuna ilerdeki<br />

bölümlerde değinilecek.<br />

fputc İşlevi<br />

int fputc(int ch, FILE *p);<br />

Bu işlev dosya konum göstericisinin bulunduğu yere 1 byte bilgiyi yazar. İşlevin birinci<br />

parametresi yazılacak karakter, ikinci parametresi ise yazılacak dosyaya ilişkin FILE yapısı<br />

adresidir. İşlevin geri dönüş değeri EOF ise yazma işlemi başarısız olmuş demektir.<br />

Yazma işlemi başarılı olmuşsa işlev yazılan karakterin sıra numarası ile geri döner.<br />

Sık yapılan bir hata işleve gönderilecek argumaların sırasını karıştırmaktır. Örneğin f FILE<br />

yapısı türünden bir nesneyi gösteren gösterici olsun. fputc işlevi<br />

fputc('A', f)<br />

yerine yanlışlıkla<br />

fputc(f, 'A');<br />

457

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

Saved successfully!

Ooh no, something went wrong!