fgetpos <STDIO.H>
Składnia: int fgetpos(FILE *stream, fpos_t *pos);
gdzie:
stream - wskaźnik do strumienia, którego aktualny wskaźnik odczytujemy.
pos - wskaźnik do zmiennej, w której ma być zwrócona aktualna pozycja wskaźnika.

Opis
Funkcja zapisuje do zmiennej *pos aktualną pozycję wskaźnika w pliku, którą możemy użyć później w funkcji fsetpos do jej odtworzenia.

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;
}

ftell <STDIO.H>
Składnia: long ftell(FILE *stream);
gdzie:
stream - wskaźnik do strumienia, którego aktualny wskaźnik odczytujemy.

Opis
Funkcja zwraca aktualną pozycję wskaźnika w pliku podawaną w bajtach (bajty w pliku liczone sa od 0).

Zwracana wartość:

  • powodzenie - aktualne położenie wskaźnika w pliku;
  • błąd - wartość -1.

Przykład:

#include <stdio.h>

int main(void)
{ FILE *stream;

  stream = fopen("TEST.$$$", "r");
  fseek(stream, 0, 2);
  printf("Wielkość pliku: %ld bajtów\n", ftell(stream));
  fseek(stream, 0, 0);
  printf("Wskaźnik początku pliku: %ld\n", ftell(stream));
  fclose(stream);
  return 0;
}