08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

işlemi hatalıdır. Durum çalışma zamanına ilişkin tanımlanmamış bir davranış (undefined<br />

behaviour) özelliği gösterir. Yani çalışma zamanında herşey olabilir. Yazmadan okumaya,<br />

okumadan yazmaya geçişte dosya göstericisi konumlandırılmalıdır. Bu durumun tek<br />

istisnası, son yapılan okuma ile dosyanın sonuna gelinmesi durumudur. Bu durumda<br />

konumlandırma yapılmadan dosyanın sonuna yazılabileceği güvence altındadır.<br />

rewind İşlevi<br />

Bu işlev ile dosya konum göstericisi dosyanın başına konumlandırılır. İşlevin bildirimi<br />

aşağıdaki gibidir:<br />

void rewind(FILE *fp);<br />

rewind(f);<br />

çağrısı ile<br />

(void) fseek(f, 0L, SEEK_SET);<br />

çağrısı aynı anlamdadır.<br />

ftell İşlevi<br />

Bu işlev dosya konum göstericisinin değerini elde etmek için çağrılır. İşlevin bildirimi<br />

aşağıdaki gibidir:<br />

long ftell(FILE *);<br />

İşlevin geri dönüş değeri dosya konum göstericisinin değeridir. Bu değer dosyanın<br />

başından itibaren kaçıncı byte olduğu bilgisi olarak verilir. Bir hata durumunda işlev -1L<br />

değerine geri döner.<br />

İkili (binary) bir dosyanın uzunluğu fseek ve ftell işlevlerine yapılan çağrılarla elde<br />

edilebilir:<br />

fseek(f, 0, SEEK_END);<br />

length = ftell(f);<br />

fgetpos ve fsetpos İşlevleri<br />

Bu işlevler, dosya konum göstericisinin değerini elde etmek ya da değerini değiştirmek<br />

için, birbirleriyle ilişkili olarak kullanılır. Bu işlevlerle dosya içindeki bir nokta<br />

işaretlenerek, daha sonra okuma ya da yazma amacıyla dosya konum göstericisi aynı<br />

noktaya konumlandırılabilir. fgetpos işlevi ile dosya konum göstericisinin değeri elde<br />

edilir, daha sonra bu konuma geri dönebilmek için fsetpos işlevi kullanılır.<br />

int fgetpos(FILE *, fpos_t *pos);<br />

İşlev birinci parametresine geçilen adresle ilişkilendirilen dosyanın dosya konum<br />

göstericisinin değerini elde ederek ikinci parametresine geçilen adrese yazar. fpos_t türü<br />

stdio.h başlık dosyası içinde bildirilen standart bir typedef türüdür. Bu tür yalnızca<br />

fgetpos ile fsetpos işlevlerinde kullanılır. İşlevin geri dönüş değeri işlemin başarısını<br />

gösterir. İşlev, başarı durumunda 0 değerine, başarısızlık durumunda sıfırdan farklı bir<br />

değere geri döner.<br />

int fsetpos(FILE *, const fpos_t *pos);<br />

İşlev, birinci parametresine geçilen adresle ilişkilendirilen dosyanın dosya konum<br />

göstericisini ikinci parametresine geçilen adresten okunan değere konumlandırır. İşlevin<br />

ikinci parametresine fgetpos işlevinden elde edilen bir değeri taşıyan nesnenin adresi<br />

geçilmelidir.<br />

473

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

Saved successfully!

Ooh no, something went wrong!