Standart Dosya Fonksiyonlarının Yazılmasına İlişin Tasarımsal Bilgiler
Bilindiği gibi dosya bilgi göstericisi olarak kullanılan FILE yapısı içerik bakımdan standart
değildir. Tipik olarak bu yapının içerisinde tamponlama işlemlerini sağlamak için bilgiler
tutulmaktadır. Örneğin tipik olarak bu yapı en az şu elemanları içermelidir:
typedef struct {
int fdes;
size_t bufsize;
void *pBuf;
size_t pos;
long filepos;
/* Diğerleri ... */
} FILE;
Şimdi temel fonksiyonları inceleyelim.
1) fopen Fonksiyonu: fopen işletim sisteminin sistem fonksiyonunu kullanarak dosyayı
parametreleri ile belirtilen modda açar, sonra FILE türünden bir yapı alanı tahsis ederek içini
gerekli bilgilerle doldurur. fopen fonksiyonunun geri verdiği adres static bir alana mı, dinamik
bir alana mı sahiptir? Genellikle tasarımcılar FILE türünden static bir yapı dizisi alıp onun bir
elemanının adresiyle geri dönerler. Böylece temel bilgiler boş heap alanına gereksinim
duymazlar.
2) fgetc Fonksiyonu: Bu fonksiyon tampondan bir karakter alır. En taban fonksiyondur. Eğer
bilgi tamponda yoksa yeni bir bilgi grubu tampona çekilecektir. Genellikle derleyiciler
tampon ile aygıt arasında alış verişi sağlayan bir fonksiyon bulundururlar, eğer bilgi
tamponda yoksa bu fonksiyonu çağırırlar.
3) fgets, fread gibi Fonksiyonlar: Bu fonksiyonlar fgetc fonksiyonunu kullanarak bilgiyi tek
tek kullanıcının belirttiği adrese aktarabilirler. Eğer daha hızlı bir çalışma isteniyorsa fgetc
fonksiyonu yerine transfer doğrudan yapılabilir.
4) fclose Fonksiyonu: Bu fonksiyon işletim sisteminin close fonksiyonunu çağırarak dosyayı
kapatır. Dosya kapatıldıktan sonra artık FILE yapısındaki bilgiler geçersiz olur.
5) fseek Fonksiyonu: Bu fonksiyon tampon tazelemesine yol açabilir.
6) feof Fonksiyonu: Bu fonksiyon dosyanın sonuna gelip gelmediğimizi çeşitli mekanizmalar
ile anlayabilir. Bazı tasarımlarda FILE yapısı içerisinde bir flag tutulmuştur. feof fonksiyonu
da bir makro olabilir.