Olmazsa Olmaz: stdio.h
Herhangi bir C programı yazdıysanız, hemen hemen her zaman stdio.h
başlık dosyasını programın başında çağırdığınızı fark etmişsinizdir. Aslında bu dosya, programın standart girdi ve standart çıktı ile etkileşimini sağlayan bileşenleri barındırır. İsmi bu yüzden Standard Input/Output'un kısaltmasıdır.
Brian Kernighan ve Dennis Ritchie'nin meşhur The C Programming Language kitabındaki basit bir örneği uygulayacak olursak, tanıdık sonuçlar elde ettiğimizi görebilirsiniz.
Yukarıdaki kodu derlediğimizde, standart girdiden okuduğu kelimelerin, küçük harfe çevrilerek standart çıktıya yazdığı görülebilir. Derlediğimiz programa lower
ismini verecek olursak, örneğin aşağıdaki şekilde kullanabiliriz.
Gördüğünüz gibi, pipe işareti ile doğrudan standart girdiden gelen veriyi okuyabildik. Eğer bu verileri bir metin dosyasına yazsaydık, standart girdi olarak metin dosyasından da yönlendirebilirdik.
Önce metin dosyamızı oluşturalım.
Şimdi programımıza standart girdi olarak sunalım.
Kısacası programımız için bilginin pipe ile veya < işareti ile gelmesinin bir önemi yok. İkisi de standart girdi çünkü. Benzer şekilde ls
çıktısını da programımıza yönlendirebilirdik.
Halbuki bölümün başında McIlroy'un belirttiği gibi, ne ls
programının bizim lower
programımızdan haberi var, ne de lower
programı yazılırken ls
ile ilgili bir noktayı dikkate aldık.
Programımızdaki getchar
fonksiyonu, aslında standart girdiden veri okuyan kısımdır. puthcar
fonksiyonu ise standart çıktıya veri yazmaktan sorumludur. Bu fonksiyonlar stdio.h
ile sağlanır. Bu yüzden kullanmak için include etmemiz gerekir.
Eğer programı tek başına çalıştırırsak, biraz daha anlaşılabilir durum.
Tanıdık geldi mi? Bu bölümün başlarında cat
programını tek başına çalıştırdığımızda da benzer manzarayla karşılaşmıştık. Yine standart girdiden veri bekledi. Biz Bu bir Cümle
yazdıktan sonra, kendisi yine standart çıktıya verinin aynısını yazdı, tıpkı cat
gibi. Ama bu sefer karakterleri küçülttü. Yine Ctrl+c ile programımızı sonlandırarak çıktık.
Burada dikkat edilmesi gereken bir diğer nokta, programımızın parametrik şekilde girdi almaması. Örneğin karakterler dosyasını argüman olarak kendisine veremezdik, çünkü programımızda gelen argümanlarla neler yapılması gerektiğini belirtmedik. Böyle olunca argümanları görmezden gelecektir, ve yukarıdaki durumun aynısı gerçekleşecektir.
Last updated