Функция
#include<stdio.h>
int fsetpos(FILE *stream, const fpos_t *pos);
устанавливает указатель текущей позиции файла, связанного с потоком stream в новую позицию, которая определяется значением, получаемым предшествующим вызовом функции fgetpos. fsetpos также сбрасывает признак конца файла, но не оказывает влияния на символы, помещаемые в поток функцией ungetc. После вызова fsetpos можно производить как операции ввода, так и вывода.
При успешном завершении fsetpos возвращает 0. При возникновении ошибки она возвращает ненулевое значение и устанавливает errno не равным 0.
Пример:
#include<stdlib.h>
#include<stdio.h>
void showpos(FILE *stream);
int main(void)
{
FILE *stream;
fpos_t filepos;
/* открыть файл для изменения */
stream = fopen("DUMMY.FIL","w+");
/* сохранить текущую позицию указателя */
fgetpos(stream,&filepos);
/* записать в файл данные */
fprintf("stream,"Это тест");
/* вывести текущую позицию */
showpos(stream);
/* установить новую позицию и вывести ее */
if(fsetpos(stream,&filepos) == 0)
showpos(stream);
else
{
fpritf(stderr,"Ошибка указателя файла\n");
exit(1);
}
/* закрыть файл */
fclose(stream);
return 0;
}
void showpos(FILE *stream)
{
fpos_t pos;
/* вывести текущее положение указателя */
fgetpos(stream,&pos);
printf("Позиция указателя: %ld\n",pos);
}