BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdio.h> > fseek

fseek() fonksiyonu

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.