- •Алфавит.
- •Объявления и определения
- •Структура и компоненты простой программы
- •Текст программы и препроцессор.
- •Структура программы.
- •Функция форматированного вывода.
- •Программы печати предельных констант.
- •Применимость вещественных данных.
- •Выделение лексем из текста программы.
- •2.2. Элементарные средства программирования Деление операторов языка Си на группы.
- •Программа оценки машинного нуля.
- •Трассировочная таблица
- •Переключатели
- •Ввод данных.
- •Вычисление объема цилиндра.
- •Операторы цикла
- •Три формы операторов цикла.
- •Приближенное значение экспоненты.
- •Оператор break.
- •Сумма отрезка степенного ряда.
- •Оператор continue.
- •Суммирование положительных чисел.
- •2.4. Массивы и вложение операторов цикла Массивы и переменные с индексами.
- •Вычисление среднего и дисперсии.
- •Упорядочение в одномерных массивах.
- •Инициализация массивов.
- •Моделирование многомерных массивов.
- •Ввод и вывод
- •7.1. Потоковый ввод-вывод
- •7.1.1. Открытие и закрытие потока
- •7.1.2. Стандартные файлы и функции для работы с ними
- •Ввод-вывод отдельных символов.
- •Ввод-вывод строк.
- •Форматный ввод-вывод.
- •Спецификаторы форматной строки для функции форматного вывода
- •Спецификаторы форматной строки для функции форматного ввода
- •Работа с файлами на диске
- •Двоичный (бинарный) режим обмена с файлами.
- •Строковый обмен с файлами.
- •Позиционирование в потоке.
- •Трехъязычный словарь "Цифры
- •7.2. Ввод-вывод нижнего уровня
- •7.2.1. Открытие / закрытие файла
- •7.2.2. Чтение и запись данных
- •7.2.3. Произвольный доступ к файлу
- •Теоретические положения Управление экраном в текстовом режиме в ms dos
- •Основные функции работы в текстовом режиме
- •2.5. Функции Определение функций.
- •Функция для вычисления объема цилиндра.
- •Функция для вычисления скалярного произведения векторов.
- •Обращение к функции и ее прототип.
- •Вычисление объема цилиндра
- •Вычисление площади треугольника.
- •Скалярное произведение векторов.
- •Препроцессорные средства
- •Глава 6. Структуры и объединения
- •6.1. Структурные типы и структуры Производные типы.
- •Структурный тип.
- •Определение структур.
- •Выделение памяти для структур.
- •Инициализация и присваивание структур.
- •Доступ к элементам структур.
- •Модули:
- •Некоторые понятия:
7.2.3. Произвольный доступ к файлу
В приведенных выше программах с функциями ввода-вывода низкого уровня обмен с файлом осуществлялся последовательно. При необходимости файл можно читать на низком уровне и в произвольном порядке. Так же как это делалось при работе с потоками, можно изменять значение указателя текущей позиции чтения/записи в файле. Для этой цели служит функция lseek( ). Прототип этой функции имеет следующий вид:
Функция lseek( ) изменяет текущую позицию в файле, связанном с дескриптором fd, на новую, определяемую смещением (второй параметр - offset) относительно выбранной точки отсчета (третий параметр - origin).
Точка отсчета задается одной из предопределенных констант, размещенных в заголовочном файле io.h (MS-DOS) или файле unistd.h (UNIX):
SEEK_SET (имеет значение 0) - начало файла;
SEEK_CUR (имеет значение 1)-текущая позиция;
SEEK_END (имеет значение 2) - конец файла.
При удачном завершении функция lseek( ) возвращает новую текущую позицию чтения/записи, представляющую собой смещение от начала файла. Попытка переместиться за пределы файла считается ошибкой. Код ошибки заносится в глобальную переменную еrrnо, определенную в заголовочном файле errno.h.
Для определения текущей позиции в файле можно использовать функцию tell( ), прототип которой имеет следующий вид:
Приведем примеры использования функции lseek( ).
Пример 1.
Установка текущей позиции в файле на его начало:
Пример 2.
Установка текущей позиции для последующего добавления данных в файл (позиция в конце файла):
Пример 3.
Модификация записей в существующем файле
В качестве еще одного примера использования функции lseek( ) приведем фрагмент программы, производящей модификацию записей в существующем файле. Запись - это объект (последовательность байтов) в файле, являющаяся сложным структурным элементом в контексте программы, обрабатывающей эти записи. Логическая структура записи может быть любой: некоторой последовательностью байтов, строкой, структурой и т.д. В следующем фрагменте программы предполагается, что все записи имеют одинаковый размер (в байтах) и размещены в файле подряд.
Буфер buff может быть определен как массив символов, достаточный для размещения одной записи.
Графика
Теоретические положения Управление экраном в текстовом режиме в ms dos
Система Borland C++ обладает богатой библиотекой функций. Для хорошего оформления диалога пользователя с компьютером (программой) необходима развитая система функций управления работой экрана. Borland C++ предоставляет пользователю такую возможность. Пакет функций управления экраном делится на две части в соответствии с возможностями компьютера. Первая – работа в текстовом режиме (text mode), вторая – работа в графическом режиме (grafics mode). Функции управления экраном не являются уникальным для Borland C++, они такие же, как в системах Turbo C++ и некоторых других. Далее будет сделан обзор основных особенностей этих функций. Библиотека функций для работы с текстовым экраном, с заголовочным файлом CONIO.H и библиотека работы с графическим экраном с заголовочным файлом GRAFICS.H не входят в стандарт языка С. Они существенно используют особенно операционной системы MS DOS, архитектуру IBM PC и графику BGI (Borland Grafics Interfase).