Функция fseek () в C ++ устанавливает индикатор позиции файла для данного файлового потока.
Функция fseek () определена в заголовочном файле.
fseek () прототип
int fseek (FILE * поток, длинное смещение, int origin);
Если файл открывается в двоичном режиме, новая позиция указателя файла точно смещена в байтах от начала координат.
Если файл открыт в текстовом режиме, поддерживаемые значения смещения:
- Ноль: работает с любым исходным значением, например SEEK_SET, SEEK_CUR и SEEK_END.
- Значение, возвращаемое вызовом ftell (stream): работает только с источником SEEK_SET.
Если поток является широко ориентированным, применяются ограничения как текстового, так и двоичного потоков, т.е. результат ftell разрешен с помощью SEEK_SET, а нулевое смещение разрешено от SEEK_SET и SEEK_CUR, но не SEEK_END.
Функция fseek также отменяет эффекты ungetc и очищает статус конца файла, если применимо.
Если происходит ошибка чтения или записи, устанавливается ошибка, и позиция файла не изменяется.
Параметры fseek ()
- stream: изменяемый файловый поток.
- смещение: количество символов, которые нужно сместить от начала координат.
- origin: Позиция, используемая как ссылка для добавления к смещению. Может иметь следующие значения:
Ценность | Описание |
---|---|
SEEK_SET | Начало файла |
SEEK_CUR | Текущая позиция файлового указателя |
SEEK_END | Конец файла |
fseek () Возвращаемое значение
- В случае успеха функция fseek () возвращает ноль, в противном случае - ненулевое значение.
Пример: как работает функция fseek ()?
#include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )
Когда вы запустите программу, вывод будет:
Имя: Эрика Возраст: 25 Город: Берлин