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

Dosya Konum Göstericisi<br />

Bir dosya byte'lardan oluşur. Dosyadaki her bir byte a 0'dan başlayarak artan sırada bir<br />

sayı karşılık getirilir. Bu sayıya ilgili byte ın ofset numarası denir. Dosya konum göstericisi<br />

içsel olarak tutulan long türden bir değişkendir, bir ofset değeri yani bir byte numarası<br />

belirtir. Dosyaya yazan ve dosyadan okuma yapan standart işlevler, bu yazma ve okuma<br />

işlemlerini her zaman dosya konum göstericisinin gösterdiği yerden yapar. Bu işlevler,<br />

dosyanın neresine yazılacağını ya da dosyanın neresinden okunacağını gösteren bir değer<br />

istemez. Örneğin dosya konum göstericisinin gösterdiği yer 100. ofset olsun. Dosyadan<br />

10 byte bilgi okumak için bir sistem işlevi çağrıldığında, 100. ofsetden başlayarak 10 byte<br />

bilgi okunur. İşletim sisteminin dosya göstericisini konumlandıran bir sistem işlevi vardır.<br />

Dosya ilk açıldığında dosya konum göstericisi 0. ofseti gösterir. Örneğin bir dosyanın 100.<br />

byte ından başlayarak 10 byte okunmak istenirse sırası ile şu işlemlerin yapılması<br />

gerekir:<br />

İlgili dosya açılır<br />

dosya konum göstericisi 100. offset'e konumlandırılır<br />

Dosyadan 10 byte okunur<br />

Dosya kapatılır.<br />

C dilinde dosya işlemleri iki biçimde yapılabilir :<br />

1. İşletim sisteminin sistem işlevleri doğrudan çağrılarak.<br />

2. Standart C işlevleri kullanılarak.<br />

Bildirimleri stdio.h içinde olan standart dosya işlevlerinin hepsinin ismi f ile başlar.<br />

Standart C işlevleri da işlemlerini yapabilmek için aslında işletim sisteminin sistem<br />

işlevlerini çağırır. İşletim sisteminin sistem işlevleri taşınabilir değildir. İsimleri ve<br />

parametrik yapıları sistemden sisteme değişebilir. Bu yüzden standart C işlevlerinin<br />

kullanılması tavsiye edilir.<br />

fopen İşlevi<br />

FILE *fopen (const char *fname, const char *mode);<br />

İşlevin birinci parametresi açılacak dosyanın ismidir. İkinci parametre açış modu bilgisidir.<br />

Her iki bilgi de bir yazı olarak işleve iletilir. Dosya ismi yol bilgisi de içerebilir. Dizin<br />

geçişleri için '/' karakteri de kullanılabilir. Bir dosya belirli modlarda açılabilir. Açış modu<br />

bilgisi, açılacak dosya ile ilgili olarak hangi işlemlerin yapılabileceğini belirler. Yine açış<br />

modu bilgisi, açılmak istenen dosyanın var olup olmaması durumunda işlevin nasıl<br />

davranacağını belirler. Aşağıdaki tabloda, fopen işlevine açış modu bilgisini iletmek üzere<br />

geçilmesi gereken yazılar listelenmiştir:<br />

Mod<br />

"w"<br />

"w+"<br />

"r"<br />

"r+"<br />

"a"<br />

"a+"<br />

Anlamı<br />

Dosya yazmak için açılır. Dosyadan okuma yapılamaz. Dosyanın var olması<br />

zorunlu değildir. Dosya yok ise verilen isimde bir dosya yaratılır. Dosya var ise<br />

dosya sıfırlanır.<br />

Var olan bir dosyayı bu modda açmak dosyanın kaybedilmesine neden olur.<br />

Dosyayı hem yazma ve okuma için açar. Dosyanın var olması zorunlu değildir.<br />

Dosya yok ise veriln isimde bir dosya yaratılır. Dosya var ise sıfırlanır.<br />

Var olan bir dosyayı bu modda açmak dosyanın kaybedilmesine neden olur.<br />

Dosya okumak için açılır. Dosyaya yazılamaz. Dosya yok ise açılamaz.<br />

Dosya hem okuma hem yazma için açılır. Dosya yok ise açılamaz.<br />

Dosya sona ekleme için açılır. Dosyadan okuma yapılamaz. Dosyanın var<br />

olması zorunlu değildir. Dosya yok ise verilen isimde bir dosya yaratılır. Dosya<br />

var ise dosya sıfırlanmaz.<br />

Dosyayı sonuna ekleme ve dosyadan okuma için açar. Dosyanın var olması<br />

zorunlu değildir. Dosya yok ise verilen isimde bir dosya yaratılır. Dosya var ise<br />

sıfırlanmaz.<br />

452

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

Saved successfully!

Ooh no, something went wrong!