- •Алфавит.
- •Объявления и определения
- •Структура и компоненты простой программы
- •Текст программы и препроцессор.
- •Структура программы.
- •Функция форматированного вывода.
- •Программы печати предельных констант.
- •Применимость вещественных данных.
- •Выделение лексем из текста программы.
- •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. Структурные типы и структуры Производные типы.
- •Структурный тип.
- •Определение структур.
- •Выделение памяти для структур.
- •Инициализация и присваивание структур.
- •Доступ к элементам структур.
- •Модули:
- •Некоторые понятия:
Работа с файлами на диске
Файл – это именованная область памяти на каком-либо физическом носителе информации, в которой может храниться исходный текст программы, какое-либо из ее промежуточных представлений, программа в машинном коде, готовая к исполнению, или данные для ее работы. В файлах могут содержаться любые текстовые документы и числовые данные, закодированная табличная, графическая и любая другая информация. Часто файлы разделяют на текстовые и двоичные, причем содержание первых предназначено для прочтения пользователем, а содержание вторых написано в машинном коде (при помощи специальных программ).
Аналогичным образом (так же как это делается при работе со стандартными потоками ввода-вывода stdin и stdout) можно осуществлять работу с файлами на диске. Для этой цели в библиотеку языка Си включены следующие функции:
fgetc( ), getc( ) - ввод (чтение) одного символа из файла;
fputc( ), putc( ) - запись одного символа в файл;
fprintf( ) - форматированный вывод в файл;
fscanf( ) - форматированный ввод (чтение) из файла;
fgets( ) - ввод (чтение) строки из файла;
fputs( ) - запись строки в файл.
Различие между функциями fgetc( ), getc( ) и fputc( ), putc( ) здесь не рассматривается, и поэтому в примерах мы будем использовать только одну из них.
Двоичный (бинарный) режим обмена с файлами.
Двоичный (бинарный) режим обмена с файлами. Двоичный режим обмена организуется с помощью функций getc() и putc(), обращение к которым имеет следующий формат:
с = getc(fp);
putc(c, fp);
где fp - указатель на поток;
с - переменная типа int для приема очередного символа из файла или для записи ее значения в файл. Прототипы функции:
int getc ( FILE *stream );
int putc (int c, FILE * stream );
В качестве примера использования функций getc( ) и putc( ) рассмотрим программы ввода данных в файл с клавиатуры и программу вывода их на экран дисплея из файла.
Программа ввода читает символы с клавиатуры и записывает их в файл. Пусть признаком завершения ввода служит поступивший от клавиатуры символ '#'. Имя файла запрашивается у пользователя. Если при вводе последовательности символов была нажата клавиша <Enter>, служащая разделителем строк при вводе с клавиатуры, то в файл записываются управляющие коды "Возврат каретки" (CR- значение 13) и "Перевод строки" (LF - значение 10). Код CR в дальнейшем при выводе вызывает перевод маркера (курсора) в начало строки экрана дисплея. Код LF служит для перевода маркера на новую строку дисплея. Значения этих кодов в тексте программы обозначены соответственно идентификаторами CR и LF, т.е. CR и LF - именованные константы. Запись управляющих кодов CR и LF в файл позволяет при последующем выводе файла на экран отделить строки друг от друга.
В приводимых ниже программах используются уже рассмотренные выше функции getchar( ), putchar( ) для посимвольного обмена со стандартными потоками stdin, stdout.
Следующая программа читает поток символов из ранее созданного файла и выводит его на экран дисплея:
Программу чтения символов из файла можно усовершенствовать, добавив возможность вывода информации на экран порциями (кадрами):
В этой программе после вывода очередного кадра из МАХ строк для перехода к следующему кадру необходимо нажать любую клавишу.
Используя двоичный обмен с файлами, можно сохранять на диске информацию, которую нельзя непосредственно вывести на экран дисплея (целые и вещественные числа во внутреннем представлении).
Необходимые примеры и разъяснения приводятся в главе 8 при описании программы обслуживания базы данных о сотрудниках предприятия. Функции save( ) и load( ) из этого примера (см. §8.2) позволяют сохранить во внешней памяти и загрузить из внешней памяти базу данных о сотрудниках предприятия.