Назва
fgetpos, fseek, fsetpos, ftell, rewind - змінюють місцеположення потоку
Огляд
#include <stdio.h>
**int fseek(**_FILE_ ***** _stream_**, long** _offset_**, int** _whence_**);**
**long ftell(**_FILE_ ***** _stream_**);**
**void rewind(**_FILE_ ***** _stream_**);**
**int fgetpos(**_FILE_ ***** _stream_**, fpos_t *** _pos__');_
Опис
Функція fseek встановлює індикатор позиції файлу для потоку, на який вказує stream. Нова позиція, вимірювана в байтах, обчислюється шляхом додавання байтів зміщення до позиції, вказаної whence. Якщо whence встановлено до SEEK_SET, SEEK_CUR або SEEK_END, зміщення буде відносним до початку файлу, поточної позиції або кінця файлу, відповідно. Вдалий виклик функції fseek очищує вказівник кінця файлу для даного потоку і скасовує будь-які ефекти функції ungetc (3).
Функція ftell добуває поточне значення індикатору позиції файлу для потоку, на який вказує stream.
Функція rewind встановлює вказівник позиції файлу для потоку, на який вказує stream, до початку файлу. Вона рівнозначна
(void)fseek(stream, 0L, SEEK_SET)
за винятком того, що вказівник помилки для потоку також очищується (дивіться ?clearerr(3)).
Функції fgetpos і fsetpos являються альтернативними еквівалентами ftell і fseek (з whence встановленим до SEEK_SET), встановлюючи і зберігаючи поточне значення зміщення файлу у або з об'єкту, на який посилається pos. На деяких не-Юнікс системах, fpos_t-об'єкт може бути складним і ці рутини виявитись єдиним способом системонезалежної зміни позиції текстового потоку.
Повернені значення
Функція rewind не повертає жодного значення. Після вдалого виконання, fgetpos, fseek і fsetpos повертають 0 і ftell повертає поточне зміщення. У протилежному випадку повертається -1 і глобальну змінну errno встановлено для вказівки помилки.
Коди помилок
EBADF : Вказаний потік не є такий, у якому можна здійснити пошук.
EINVAL : Аргумент whence не є SEEK_SET, SEEK_END або SEEK_CUR.
Функції fgetpos, fseek, fsetpos і ftell можуть також зазнати невдачі у встановленні errno із значеннями, вказаними для функцій fflush(3), ?fstat(2), ?lseek(2) і ?malloc(3).
Відповідність стандартам
Функції fgetpos, fsetpos, fseek, ftell і rewind відповідають стандартові ANSI X3.159-1989 ("ANSI C").