Amiga Dünyası sayı 17, sayfa 28

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 28

"wb" Yazmak için binary dosyasını açar.

"ab" Eklemek için binary dosyasını açar.

"r+" Okuma/yazma için ASCII dosyasını açar.

"w+" Okuma/yazma için ASCII dosyasını oluşturur.

"a+" Okuma/yazma için ASCII dosyasını açar.

"rb+" Okuma/yazma için binary dosyasını açar.

"wb+" Okuma/yazma için binary dosyasını oluşturur.

"ab+" okuma/yazma için binary dosyasını açar.

Burada dikkat ettiyseniz ANSI standardının getirmiş olduğu bir özellik olarak bir dosyayı hem ASCII, hem de binary olarak buffered file system'da açabiliyoruz.

fp değişkeni, FILE tipinde olup dosya pointer değişkeni olarak tanımlanır. FILE dosya structure'ı ise, <stdio.h> kütüphanesi içerisinde tanımlanmaktadır, fp dosya pointer'ı, fopen() ile verilen bir değer dışında değiştirilmemelidir.

Dosya adı, bir karakter dizisi şeklinde verilir. Dosya ismi bir directory altında olacak şekilde de tanımlanabilir (path belirleme).

Dosya açılmasına bir örnek verirsek:

#include <stdio.h>

main()

{

FİLE *fp:

fp = fopen("deneme","r"); if(fp == NULL) {

printf("Dosya bulunamadı"): 'exit():

} printf("Dosya bulundu"); fclose(fp):

}

Burada fp dosya pointer'ı olarak tanımlanıyor. Daha sonra 'deneme' adı altında bir dosya yalnız okuma amacıyla açılıyor. Eğer böyle bir dosya yoksa, 'Dosya bulunamadı' mesajıyla programdan çıkılıyor. Aksi takdirde 'Dosya bulundu' yazılarak açılan dosya kapanıyor ve program sona eriyor.

Buradaki NULL macro değişkeni 0 değerindedir. <stdio.h>'ta tanımlanmaktadır. Eğer fopen() dosyayı bulamazsa, NULL return koduyla geri dönmektedir.

Şimdi bir dosyayı yazma için açalım.

#include <stdio.h>

main()

{ FİLE *fp:

fp = fopcn( "deneme"."w"): if(fp==NULL) {

printff'Dosya açılamadı");

exit(); } fputs("veri",fp); fclose(fp);

}

Eğer dosya açılırsa, "veri" datası deneme dosyasına yazılıyor. Buradaki fputs() fonksiyonunun kullanımına dikkat edin. Normal puts() fonksiyonundan farklı olarak, bir de yazılacak olan dosya pointer'ını kullanıyor. Aynı şekilde, fgets() fonksiyonu da alacağı veriyi dosya'dan, dosya pointer'ı sayesinde alıyor. Kullanımlarına dikkat ettiyseniz, fgets() ve fputs() komutlarının kullanımı oldukça kolay. Tek fark dosya pointer'ına bağımlı olmaları.

Şimdi, fseek() fonksiyonuna gelelim. Bu fonksiyon dosya pozisyon göstergecini istenen pozisyona getirir. Bu komut sayesinde buffer'lı input / output sisteminde random olarak dosyadan okuma / yazma işlemleri yapılabilir. Genel kullanım şekli ise şöyledir;

fseek(fp, offset, origin);

fp, file pointer'ı yani dosyanın hafızada bulunduğu yer. 'offset' ise origin'den itibaren olan byte sayısı. Diğer bir deyişle, eğer biz origin'i başlangıç olarak kabul edersek, offset'i ise 10 verirsek, fseek komutu dosya pointer göstergecini dosyanın başlangıcından itibaren 10 byte ileri alacak şekilde bize hazırlayacaktır. Bu da bizim bir dosyaya random olarak ulaşmamızı sağlayacaktır. Burada origin üç şekilde olabilir:

değer origin 0 Dosya başı 1 Aktif pozisyon 2 Dosya sonu fseek() komutunun işlevi bu kadar. Sıra fprintf() fonksiyonuna geldi.

fprintf() fonksiyonu, printf() fonksiyonunun ekran için yaptığını dosya için yapar. Burada fprintf(), printf()'ten farklı olarak bir de dosya pointer değişkenini istemektedir. Genel kullanım şekli ise şöyledir:

Klavyeyle gezinmek için ← ve → tuşları.