7.3. Rastgele Erişim
Normalde, bir dosya açıldıktan sonra, ilk
okuma veya yazma işlemi dosyanın hemen başından yapılır. Bir sonraki işlem
ise, en son işlem tarafından etkilenen son baytı izleyen bayttan başlayarak
yapılır. Bundan dolayı, buna sıralı erişim denir. Bunu yapmadan, yani
önceki baytları okuyup veya yazmadan, istediğimiz bir bayta ulaşmak (yani
rastgele erişim yapmak) için fseek kullanırız:
fseek(dosya_gostergesi, uzun_sayi, nereden)
Yukarıdaki çağrıda ilk iki argümanın tipleri isimlerinden anlaşılabilir.
nereden ise ya SEEK_SET (dosyanın başından),
ya SEEK_CUR (şu anki konumundan) ya da SEEK_END
(dosyanın sonundan) olabilir. fseek işletildikten sonra
dosya_gostergesi tarafından işaret edilen dosya üzerindeki
okuma veya yazma nereden ile belirtilmiş yerden
uzun_sayi mesafedeki bayttan başlayacaktır. Eğer herhangi
bir hata olursa, fseek sıfırdan farklı bir sayı döndürür, aksi
takdirde 0 verir. Bir metin dosyasında bir karakterin
konumunun hesaplanmasının anlamlı yada en azından taşınabilir bir özellik
olmadığına dikkat edin; fseek tamamen ikili (ham)
girdi ve çıktı içindir.
Eğer, birtakım işlemlerden sonra, dosyanın başından kaç bayt
ileride olduğunuzu öğrenmek isterseniz ftell kullanın:
uzun_sayi = ftell(dosya_gostergesi)
uzun_sayi’ya miktarı koyacaktır;
eğer bir hata olursa -1L verecektir.
Sık sık dosyayı geri sarmak
, yani başına fseek
yapmak isteyebilirsiniz.
rewind(dosya_gostergesi)
bunu yapmanın kısa bir yoludur.