setpos <STDIO.H>
Składnia: int fsetpos(FILE *stream, const fpos_t *pos);
gdzie:
stream - wskaźnik do strumienia, w którym zmieniamy pozycje wskaźnika.
pos - pozycja wskaźnika zapamiętana przez ostanie wywołanie fgetpos.

Opis
Wstawia wskaźnik strumienia w nowej pozycji. Pozycja, na którą ustawiamy wskaźnik musi być wcześniej zapamiętana funkcja fgetpos. fsetpos również czyści wskaźnik końca pliku i wskaźnik błędu w strumieniu. Po wywołaniu funkcji fsetpos następną operacja może być zarówno odczyt z, jak i zapis do strumienia.

Zwracana wartość:

  • powodzenie - zero;
  • błąd - wartość różna od 0.

Przykład:

#include <stdio.h>

void wyswietl_wskaznik(FILE *stream)
{ fpos_t pos;

  fgetpos(stream, &pos);
  printf("Aktualna pozycja w pliku: %ld\n", pos);
}

int main(void)
{ FILE *stream;
  fpos_t pos;

  stream = fopen("TEST.$$$", "w+");

  fgetpos(stream, &pos);             // zapamiętanie wskaźnika

  fprintf(stream, "To jest test...");

  wyswietl_wskaznik(stream);                // wyświetlenie wskaźnika

  if (fsetpos(stream, &pos) == 0)    // przywrócenie wskaźnika
    wyswietl_wskaznik(stream);
  else
  { fprintf(stderr, "Błąd przywracania wskaźnika.\n");
    exit(1);
  }

  fclose(stream);
  return 0;
}

fseek <STDIO.H>
Składnia: int fseek(FILE *stream, long ile, int skąd);
gdzie:
stream - wskaźnik do strumienia, w którym zmieniamy pozycje wskaźnika.
ile - różnica między skąd i nową pozycją wskaźnika. Wartość dodatnia przesuwa wskaźnik w stronę końca pliku, a ujemna - początku.
skąd - miejsce w pliku, od którego ma byc liczona wartość ile:
  • 0 - od początku pliku;
  • 1 - od aktualnej pozycji wskaźnika;
  • 2 - od końca pliku.

Opis
Ustawia wskaźnik strumienia w nowej pozycji. fseek również czyści wskaźnik końca pliku i wskaźnik błędu w strumieniu. Po wywołaniu funkcji fseek następną operacja może być zarówno odczyt z, jak i zapis do strumienia.

Zwracana wartość:

  • powodzenie - zero;
  • błąd - wartość różna od 0.

Przykład:

#include <stdio.h>

int main(void)
{ FILE *stream;
  long curpos;

  stream = fopen("TEST.$$$", "w+");
  fprintf(stream, "To jest test...");

  curpos = ftell(stream);
  fseek(stream, 0L, 2);           // ustawia wskaźnik na końcu pliku
  printf("Wielkość pliku: %ld bajtów\n", ftell(stream));
  fseek(stream, curpos, 0);       // przywraca poprzednią pozycję wskaźnika
  fclose(stream);
  return 0;
}

rewind <STDIO.H>
Składnia: void rewind(FILE *stream);
gdzie:
stream - wskaźnik do strumienia, w którym zmieniamy pozycje na początek pliku.

Opis
Ustawia wskaźnik strumienia na początku plik. Działa identycznie, jak fseek(stream, 0L, 0). Czyści wskaźnik końca pliku i wskaźnik błędu w strumieniu. Po wywołaniu funkcji rewind następną operacja może być zarówno odczyt z, jak i zapis do strumienia.

Zwracana wartość: brak

Przykład:

#include <stdio.h>

int main(void)
{ FILE *stream;
  char znak;

  stream = fopen("TEST.$$$","w+");
  fprintf(stream, "abcdefghijklmnopqrstuvwxyz");
  rewind(stream);
  fscanf(stream, "%c", &znak);
  printf("Pierwszy znak w pliku: %c\n", znak);
  fclose(stream);
  return 0;
}