Функція fseek () в C ++ встановлює індикатор положення файлу для даного потоку файлів.
Функція fseek () визначена у файлі заголовка.
прототип fseek ()
int fseek (FILE * потік, довгий зсув, походження int);
Якщо файл відкрито в двійковому режимі, нова позиція вказівника на файл точно зміщується в байтах від початку.
Якщо файл відкрито в текстовому режимі, підтримуються значення зміщення:
- Нуль: Він працює з будь-яким значенням походження, тобто SEEK_SET, SEEK_CUR та SEEK_END.
- Значення, повернене викликом ftell (stream): воно працює лише з початком SEEK_SET.
Якщо потік широко орієнтований, застосовуються обмеження як текстових, так і двійкових потоків, тобто результат ftell допускається за допомогою SEEK_SET і нульове зміщення від SEEK_SET та SEEK_CUR, але не SEEK_END.
Функція fseek також скасовує ефекти ungetc та очищає стан кінця файлу, якщо це можливо.
Якщо виникає помилка читання або запису, встановлюється ferror, і позиція файлу не змінюється.
Параметри fseek ()
- потік: потік файлів, який потрібно змінити.
- зміщення: кількість символів, які слід витіснити з початкової точки.
- початок: Позиція, яка використовується як посилання для додавання до зміщення. Він може мати такі значення:
Значення | Опис |
---|---|
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 Місто: Берлін