Задать позицию указателя положения в файле
#include <stdio.h>
int fsetpos( FILE *fp,
const fpos_t *pos );
- fp
- Поток, в котором нужно задать позицию указателя.
- pos
- Указатель на объект
fpos_t
, который определяет новую позицию в потоке. Необходимо инициализировать значение указателя pos вызовом fgetpos() для этого же файла.
libc
Функция fsetpos() устанавливает текущую позицию в файле, определенном fp, в соответствии со значением объекта fpos_t
, на который указывает pos.
- 0
- Успешное завершение.
- ≠0
- Возникла ошибка. Код ошибки записан в errno.
- EAGAIN
- Для файлового дескриптора установлен флаг
O_NONBLOCK
, процесс записи будет отложен. - EBADF
- Файловый дескриптор файлового потока не открыт для записи или буфер потока нуждается в сбросе, но файл не открыт.
- EFBIG
- Одна из следующих причин:
- Попытка выполнить запись в файл, достигший максимального размера.
- Попытка выполнить запись в файл, превышающий предельный размер файла процесса.
- Для обычного файла была выполнена попытка записи по максимальному смещению соответствующего потока или за его пределы.
- EINTR
- Операция записи была прервана пришедшим сигналом; данные не были переданы.
- EINVAL
- Аргумент некорректен. Результирующий индикатор файловой позиции устанавливается в отрицательное значение.
- EIO
- Одна из следующих причин:
- Возникла физическая ошибка ввода/вывода.
- Процесс, являющийся членом группы фоновых процессов, пытается писать в управляющий терминал,
TOSTOP
установлен, процесс ни игнорирует, ни блокирует SIGTTOU
, группа процеса является осиротевшей. - (расширение ЗОСРВ «Нейтрино») Файловая система находится на съемном устройстве, и это устройство было принудительно извлечено.
- ENOSPC
- На устройстве, содержащем файл, не осталось свободного места.
- ENXIO
- Запрос был сделан от лица несуществующего устройства, либо запрос лежит вне возможностей устройства.
- ESPIPE
- Файловый дескриптор потока ассоциирован с каналом или FIFO.
- ENOSYS
- Устройство не поддерживает функцию поиска.
См. fgetpos().
ANSI, POSIX 1003.1
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
errno, fgetpos(), fopen(), fseek(), ftell()
Предыдущий раздел: Описание API системной библиотеки