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şla***** 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:
Kod: Kodu kopyalamak için üzerine çift tıklayın!
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) yada 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şlıyacaktı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/çıktı içindir.
Eğer, birtakım işlemlerden sonra, dosyanın başından kaç bayt ileride olduğunuzu öğrenmek isterseniz ftell kullanın:
Kod: Kodu kopyalamak için üzerine çift tıklayı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.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
rewind(dosya_gostergesi)
Bunu yapmanın kısa yoludur..