Bildirim
int fseek(FILE *stream, long offset, int origin);
Açıklama
Dosya akışına ait dosya konum göstergesini origin parametre değerinde yer alan değere göre offset parametre değeri ile gösterilen değere ayarlar.
Eğer akış ikili modda açılırsa, origin parametre değeri;
SEEK_SET ise yeni konum dosyanın başlangıcından, SEEK_CUR ise yeni konum geçerli dosya konumundan, SEEK_END ise yeni konum dosyanın sonundan
itibaren offset parametre değeri kadar byte uzaklıktadır.
Eğer akış metin modunda açılırsa, offset parametre değeri için sadece 0 değeri (bütün origin değerleri ile kullanılır) ve aynı dosyayla ilişkili bir akışta ftell() fonksiyonu ile geri döndürülen bir değer (sadece SEEK_SET origin değeri ile kullanılır) verilebilir.
Parametreler
stream: Konumu değiştirilecek dosya akışını gösterir.
offset: Origin parametresine göre kaydırılacak karakter sayısını gösterir. Negatif bir değer aldığında dosya konum göstergesi geriye doğru hareket eder.
origin: Dosya akışının baz alınacak konumunu gösterir. Aşağıdaki değerlerden birini içerir:
SEEK_SET: Dosya başı SEEK_CUR: Dosyanın aktif konumu SEEK_END: Dosya sonu
Dönüş değeri
İşlem başarılı olursa sıfır değeri, aksi takdirde sıfır olmayan bir değer geri döndürülür.
Örnek
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
fpos_t pos;
char cdizi[11];
if ((fp = fopen ("dosya.txt", "w+")) == NULL) {
printf("Dosya açma hatası!");
exit(1);
}
fputs("Bilgisayar", fp);
/* Dosya konumunu başa alma */
fseek(fp, 0, SEEK_SET); /* rewind(fp) */
fgetpos(fp, &pos);
printf("Dosyanın aktif konumu: %ld ", pos);
fgets(cdizi, 11, fp);
printf("Karakter dizisi: %s\n", cdizi);
/* Dosya aktif konumunu 5 byte geri alma */
fseek(fp, -5, SEEK_CUR);
fgetpos(fp, &pos);
printf("Dosyanın aktif konumu: %ld ", pos);
fgets(cdizi, 11, fp);
printf("Karakter dizisi: %s\n",cdizi);
fclose(fp);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Dosyanın aktif konumu: 0 Karakter dizisi: Bilgisayar Dosyanın aktif konumu: 5 Karakter dizisi: sayar
Yukarıdaki program, yazma ve okuma modunda (w+) bir dosya açarak dosyayı oluşturur. Açtığı dosyaya fputs() fonksiyonu ile "Bilgisayar" karakter dizisini yazar. Dosyayı fseek() fonksiyonu ile başa aldıktan sonra, fgetpos() fonksiyonu ile aktif konumu ve fgets() fonksiyonu ile karakter dizisini okutup ekrana yazar. Sonra, fseek() fonksiyonu dosyanın aktif konumunu 5 byte geri alarak tüm işlemleri tekrar gerçekleştirir.