Прототип функции fseek:
int fseek( FILE * filestream, long int offset, int origin );
Заголовочный файл
| Название | Язык |
|---|---|
| stdio.h | С |
| cstdio | С++ |
Описание
Функция fseek перемещает указатель позиции в потоке. Устанавливает внутренний указатель положения в файле, в новую позицию, которая определяются путем добавления смещения к исходному положению.
Внутренний индикатор конца файла EOF очищается после вызова этой функции, и все эффекты от предыдущих вызовов функции ungetc удаляются.
При использовании функции fseek в текстовых файлах со смещением на величину значения, отличного от нуля или значения, полученного функцией ftell, имейте в виду, что на некоторых платформах, в связи с нестандартным форматом преобразования текстовых файлов, может возникнуть ситуация с некорректного позиционирования указателя.
Для потоков, открытых в режиме обновления (чтения + записи), вызов функции fsetpos позволяет переключаться между режимами чтения и записи.
Параметры:
- filestream
Указатель на объект типаFILE, идентифицируемый поток. - offset
Количество байт для смещения, относительно некоторого положения указателя. - origin
Позиция указателя, относительно которой будет выполняться смещение. Такая позиция задаётся одной из следующих констант, определённых в заголовочном файле<cstdio>:
| SEEK_SET | Начало файла |
| SEEK_CUR | Текущее положение файла |
| SEEK_END | Конец файла |
Возвращаемое значение
В случае успеха, функция возвращает нулевое значение.
В противном случае, она возвращает ненулевое значение.
Пример: исходный код программы
//пример использования функции fseek
#include <cstdio>
#include <iostream>
int main()
{
FILE * ptrFile = fopen( "example.txt" , "w" );
fputs( "This is sample." , ptrFile ); // записать в файл строку
fseek( ptrFile , 9 , SEEK_SET ); // изменить позицию на 9 байт относительно начала файла
fputs( "parta" , ptrFile ); // дописать слово в файл
fclose ( ptrFile );
return 0;
}
Пример работы программы
После успешного выполнения этого кода, файл example.txt содержит: