Bu sayfadaki yazılar
Sayfanın metni
Sayfa 54
SEYFETTİN ÇANKAYA
Bu yazıda herhangi bir dosyanın uzunluğunu bulan bir program inceleyeceğiz. Program daha önceki yazılarımızda gördüğümüz birçok bilgiyi içermektedir. Programın amacı uzunluğunu merak ettiğiniz bir dosyanın bayt olarak öğrenmenizi sağlamaktır. Aynı işi AMIGA-DOS kullanarak ta yapabilirsiniz. Bunu sağlayan komut ise “İs'dir. Bu komut dosya uzunluğunu doğrudan file kütüğünden okumaktadır. Bizim programın özelliği uzunluğu doğrudan o dosyaya erişerek hesaplamasıdır. Bunun avantajı file kütüğüne girilerek dosya uzunluğunun değiştirilmesi durumunda bile programın gerçek dosya büyüklüğünü doğru olarak hesaplayabilmesidir. Program fsıze dosyal şeklinde kullanılmaktadır. Böylece dosyal isimli dosyanın büyüklüğü bayt olarak hesaplanmaktadır. İstenildiğinde birden fazla dosya ismi girilebilir. Bu durumda dosyalara ilişkin değerler alt alta sıralanacaktır. Eğer dosya ismi hatalıysa program bunu bir hata mesajıyla belirtir.
V(0D)
PROGRAMIN İNCELENMESİ
Daha önceki yazılarda anlatılan main (argc, argv) ifadesi klavyeden gerilin bilgilerin programa aktarılmasına yaramaktadır. Girilen her bir kelime ayrı ayrı işleme konur. Her kelime arasında boşluk bulunmalıdır. Kelimelerin sayısı teorik olarak sınırsızdır. Kelime sayısı arge ile belirlenmiştir. Bu bir tamsayı olduğundan bir alt satırda INT olarak tanımlanmıştır. Kelimelerin oluşturduğu karakter dizileri argv ile tanımlıdır kelimelerin sayısı belli olmadığından bu diziler programda pointer olarak char *argv| | olarak tanımıştır. FILE *fp, *fopen( ) yeni inceleyeceğimiz bir kullanım, FİLE dosya işlemi yapılacağını ifade etmektedir. *fopen( ) pointer fonksiyondur. Kullanımı fopen (*dosya ismi, “işlem türü') şeklindedir. Burada işlem türü olarak kullanılmıştır. Dosya okuma işlemini göstermektedir. Benzer olarak yazma işlemidir. Programdaki fp ise bu fonksiyonun çağrılmasından sonraki pointer değeridir. Bu pointer fopen ile elde edilen dosyaya ilişkin bilgilerin ilk değerini gösterir. Programda fopen değerinin sıfırdan farklı olması gerektiği görülür. Aksi durumad “hatalı giriş” mesajı verilir. Programdaki while çevrimi --argc sıfır olduğu sürece devam eder. Çevrim içinde yeralan filesay(fp) fonksiyonu fp ile belirli dosyanın uzunluğunu saymaya yarar. Bu fonksiyon içinde kullanılan getc(fp) fonksiyonu ise o dosyadan okunan karakterlerin asc değeridir. Bu değer program içinde kullanılmamasına karşılık sadece EOF (end of file) değerine kadar sayma işleminin yapılmasına yarar. Sayma işlemi fonksiyon içindeki for çevrimi ile gerçekleşir. Uzunluk co INT değeri ile belirlidir. Dikkat edildiğinde co değişkeni main ifadesinin üstünde tanımlanmıştır. Böylece program içindeki her yerde co değeri aynıdır. Bunu printf içinde kullanılan co değişkeninden görebiliriz. Son olarak fclose(fp) fonksiyonunu inceleyelim. Bu fonksiyon kullanımı sona ermiş bir dosyayı kapatmaya yaramaktadır. Bu sayede yeni bir dosyanın açılabilmesi sağlanmış olur.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 55
#&k FİLE UZUNLUGĞUNİ HESAPLAYAN ÖRNEK C FROGRAMI
#include <lattice/stdio.h” #incluüde <exec/types.h
int co;
mainlarge, arav) /k Klavyeden girilen bilgilere ait main kullanimi int arge; char targvl1ş « FİLE *fp, *fopen O ş
<file ismi >...ı")ş
printf(" COMMODORE DERGİSİ 1988 (0)
if (arge 1) /& Eger arguman girilmediyse.. */ filesay(stdin);
else while > 0) 1f ((fp fopen printf("Hatali giris kargv); break; ) else (
filesay(fp); printf("file uzunluğu: Xd byte... Sn", co);
ftılesay(fp) /* File uzunluğunu savan altprogram */ FİLE *fpş
for (ca
lee
*/