Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора по яп 2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
204.42 Кб
Скачать

Void rewind(file *stream);

Устанавливает указатель текущего байта на начало файла.

После вызова rewind следующей операцией над файлом может быть либо ввод, либо вывод.

Int fsetpos(file *stream, const fpos_t *pos);

fsetpos устанавливает указатель файла stream, в новое положение.

При успешном выполнении fsetpos возвращает 0. При ошибке данная функция возвращает ненулевое значение.

long ftell(FILE *stream)

ftell возвращает текущее положение (смещение) указателя файла stream. Смещение измеряется в байтах, считая от начала файла. Если по каким-то причинам текущая позиция не определена, функция возвращает -1L.

Значение, возвращенное функцией ftell, обычно используется для последующего вызова fseek.

Пример Получить текущую длину файла можно простым позиционированием:

FILE *fd;

...

long fsize;

fseek(fd,0L,SEEK_END); // Установить позицию на конец файла

fsize = ftell(fd); // Прочитать значение текущей позиции

Примечание:

Библиотечные функции для работы с файлами делятся на две группы: потоковые и префиксные. Потоковые функции выполняют дополнительную буферизацию информации. Префиксные функции не выполняют дополнительной буферизации информации и сразу обращаются к функциям MS-DOS. Мы рассматривали потоковые функции.

45. Указатели. Указатели и адреса объектов. Указатели и массивы. Указатели.

Указатель - это переменная, содержащая адрес другой переменной. Значениями указателей служат адреса участков памяти, выделенных для объектов конкретных типов. Именно поэтому в определении и описании указателя всегда присутствует обозначение соответствующего ему типа. Эта информация позволяет в последующем с помощью указателя получить доступ ко всему сохраняемому объекту в целом.

Указатели делятся на две категории:

  • указатели на объекты

  • указатели на функции

Выделение этих двух категорий связано с отличиями в свойствах и правилах использования. Например, указатели функций не допускают применения к ним арифметических операций, а указатели объектов разрешено использовать в некоторых арифметических операциях.

Указатели и адреса объектов

В простейшем случае определение и описание указателя-переменной на некоторый объект имеет вид

type *имя_указателя;

где type – обозначение типа, имя_указателя – идентификатор, * - унарная операция раскрытия ссылки (операция разыменования, операция обращения по адресу, операция доступа по адресу)

Признаком указателя при лексическом разборе определения или описания служит символ *, помещенный перед именем.

Например int *ip1, *ip2, i

вводит два указателя на объекты целого типа ip1, ip2 и одну переменную i целого типа.

В нашей реализации под все элементы будет отведено по 2 байта памяти.

Иногда целесообразно при определении указателя выполнить его инициализацию

type *имя_указателя = инициализирующее выражение

type *имя_указателя (инициализирующее выражение)

Примеры

char cc='d'; // символьная переменная (типа char)

char *pc=&cc; // инициализированный указатель на объект типа char

char *ptr(NULL); // нулевой указатель на объект типа char

char *p; // неинициализированный указатель на объект типа char

Переменная, объявленная как указатель, хранит адрес памяти. Размер памяти, требуемый для адреса, и формат этого адреса зависит от компьютера и реализации компилятора, зависят от выбранной модели памяти (near, far, huge).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]