Позиционирование в потоке

Одной из характеристик потока является позиция чтения (записи). Фактически, она представляет собой простой счетчик байтов относительно начала файла. Именно в эту позицию помещаются даны при очередной попытке записи, из позиции чтения извлекаются данные при чтения информации.

Позиция текущего указателя потока изменяется при выполнении операций чтения записи, перемещаясь на число, равное количеству записанных (считанных) байт. При дисковом вводе/выводе позиция может меняться произвольно. Потоки, поддерживающие смену позиции называются потоками с произвольным доступом. Следующие функции, позволяющие осуществлять произвольный доступ:

long int ftell (FILE *stream);

Функция ftell возвращает текущую позицию указателя в файле. Она может завершиться с ошибкой, если файл не поддерживает позиционирование или если позиция не может быть представлена (не помещается) как long. В случае ошибки функция ftell возвращает -1. Еще один способ получить значения указателя потока – использовать функцию

int fgetpos(FILE *fp, fpos_t *pos);

Переместить позицию текущего указателя можно с использованием функции:

int fseek (FILE *stream, long int offset, int base);

Здесь stream – потоковая переменная. а параметры offset и base задают новое значение указателя: он устанавливается по смещению offset байт относительно позиции base, в качестве которой можно задать:

SEEK_SET-начало потока

SEEK_END-конец потока

SEEK_CUR-текущее положение.

Тогда вызов

fseek(fp, 0, SEEK_SET);

переместит указатель в начало потока, а вызов

fseek(fp, -4, SEEK_CUR);

возвратит его на 4 байта назад относительно текущей позиции.

На позицию указателя могут повлиять функции:

int fsetpos(FILE*fp, const fpos_t *pos);

void rewind(FILE *fp); //перемещает указатель к началу потока








Дата добавления: 2015-06-01; просмотров: 941;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.