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

fgets(char *str, int n, FILE *f);<br />

İşlevin bu parametresine stdin değeri geçildiğinde, diziye yerleştirilecek satır klavyeden<br />

alınır. Böyle bir çağrı gets işlevine yapılan bir çağrıya tercih edilmelidir, çünkü gösterici<br />

hatası riski ortadan kaldırılmış olur.<br />

char str[20];<br />

gets(s);<br />

Yukarıda gets işlevine yapılan çağrıda, klavyeden 20 ya da daha fazla karakter girilmesi<br />

bir gösterici hatası oluşmasına neden olur. Ancak çağrı<br />

fgets(str, 20, stdin);<br />

biçiminde yapıldığında diziye en fazla 19 karakter yazılır. Yani gösterici hatası oluşması<br />

riski yoktur. Yalnız burada dikkat edilmesi gereken nokta fgets işleviyle diziye '\n'<br />

karakterinin de yazılması olasılığıdır. Aşağıdaki kodu inceleyin:<br />

#include <br />

#include <br />

int main()<br />

{<br />

char str[20];<br />

printf("bir isim giriniz : ");<br />

fgets(str, 20, stdin);<br />

if (!strcmp(str, "NECATI"))<br />

printf("esit\n");<br />

else<br />

printf("esit degil\n");<br />

}<br />

return 0;<br />

Yukarıdaki program çalıştırıldığında klavyeden NECATI ismi girildiğinde ekrana "eşit degil"<br />

yazısı yazdırılır. Zira fgets işlevi NECATI girişi yapıldıktan sonra girilen newline karakterini<br />

de diziye yerleştirir. Yani aslında strcmp işlevi<br />

N E C A T I<br />

N E C A T I \n<br />

yazılarını karşılaştırır.<br />

Karşılaştırma işleminden önce aşağıdaki gibi bir if deyimi kullanılabilirdi:<br />

if ((ptr = strchr(str, '\n')) != NULL)<br />

*ptr = '\0';<br />

Yukarıdaki deyimde strchr işleviyle str adresindeki yazının içinde '\n' karakteri aranıyor.<br />

Yazının içinde '\n' karakteri bulunursa, bu karakterin yerine sonlandırıcı karakter<br />

yazılıyor. Yani yazının sonunda '\n' karakteri varsa yazıdan siliniyor.<br />

freopen İşlevi<br />

Bu işlev daha önce açılmış bir dosyayı, kendi açtığı dosyaya yönlendirir. İşlevin bildirimi:<br />

477

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

Saved successfully!

Ooh no, something went wrong!