Функцията fseek () в C ++ задава индикатора за позицията на файла за дадения файлов поток.
Функцията fseek () е дефинирана в заглавния файл.
прототип на fseek ()
int fseek (FILE * поток, дълъг офсет, int произход);
Ако файлът е отворен в двоичен режим, новата позиция на файловия указател е точно изместена байта от началото.
Ако файлът се отвори в текстов режим, поддържаните стойности за отместване са:
- Нула: Работи с всякаква стойност на произхода, т.е. SEEK_SET, SEEK_CUR и SEEK_END.
- Стойност, върната от повикване към ftell (поток): Тя работи само с произход на SEEK_SET.
Ако потокът е широко ориентиран, се прилагат ограниченията както на текстови, така и на двоични потоци, т.е. резултатът от ftell е разрешен с SEEK_SET и нулево отместване е позволено от SEEK_SET и SEEK_CUR, но не и SEEK_END.
Функцията fseek също отменя ефектите на ungetc и изчиства състоянието на края на файла, ако е приложимо.
Ако възникне грешка при четене или запис, се задава ferror и позицията на файла не се влияе.
fseek () Параметри
- поток: Файловият поток за модифициране.
- offset: Броят на знаците, които трябва да се изместят от началото.
- произход: Позиция, използвана като препратка за добавяне към отместване. Може да има следните стойности:
Стойност | Описание |
---|---|
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 Град: Берлин