- •Лабораторная работа № 1
- •Далее создадим файл:
- •Задания1
- •Лабораторная работа № 2
- •Консольный ввод-вывод
- •Чтение и запись символов
- •Чтение и запись строк
- •Форматированный консольный ввод-вывод
- •Форматированный вывод
- •Форматированный ввод
- •7. Варианты задания
- •Лабораторная работа № 3
- •5.2 Оператор if
- •Лабораторная работа № 4
- •Содержание отчета
- •Постановка задачи.
- •Общие сведения
- •Лабораторная работа № 5
- •Оператор for
- •Вариации цикла for
- •Бесконечный цикл
- •Циклы for без тела
- •Задание 2. Циклический вычислительный процесс конечные суммы и произведения
- •Лабораторная работа № 6
- •Оператор цикла while
- •Оператор do … while
- •Оператор break
- •Оператор continue
- •Лабораторная работа № 7
- •5.1 Одномерный массив
- •Создание указателя на массив
- •5.3 Индексация с помощью указателей
- •Сортировка
- •Методические указания.
- •Лабораторная работа № 8
- •Двухмерные массивы
- •Лабораторная работа № 9
- •Лабораторная работа № 11
- •Задача 2. Параметры функции
- •Лабораторная работа № 12
- •Варианты заданий
- •Лабораторная работа № 13
- •Некоторые операции над матрицами
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 14
- •Решение уравнения методом деления отрезка пополам (бисекций)
- •Методические указания
- •Лабораторная работа № 15
- •Вычисление определенного интеграла
- •6.2.1 Метод средних прямоугольников
- •6.2.1 Метод трапеций
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 10
- •Структуры (struct)
- •Лабораторная работа № 16
- •Директива #include
- •7. Методические указания
- •8. Варианты заданий.
- •Лабораторная работа № 17
- •Указатель на файл
- •Открытие файла
- •Перенаправление потока
- •Чтение из потока и запись в поток
- •Закрытие потока
- •Использование функций feof() и ferror()
- •Варианты заданий
- •Лабораторная работа № 18
- •Функции обработки символов
- •Функции обработки строк
- •Варианты заданий
- •Лабораторная работа № 19
- •Структуры
- •6.1.1 Доступ к элементам структуры
- •6.1.2 Присваивание структур
- •Массивы структур
- •Передача структур в функции
- •Передача членов структур в функции
- •Передача всей структуры в функцию
- •Указатели на структуры
- •Объявление указателя на структуру
- •Использование указателей на структуру
- •Массивы и структуры в структурах
- •Функции fread () и fwrite ()
- •Варианты заданий
- •Лабораторная работа № 20
- •Например, формула
- •Задание на программирование
Указатель на файл
Указатель на файл – это указатель на информацию, определяющую различные параметры файла, включая его имя, состояние и текущую позицию. В принципе, указатель на файл идентифицирует конкретный дисковый файл и используется потоком для выполнения операций ввода-вывода. Указатель на файл – это переменная-указатель типа FILE (тип, определенный в файле stdio.h). Чтобы прочитать или записать файлы, программе надо использовать указатели на файлы. Для создания файловой переменной-указателя используется оператор типа:
FILE *fp;
Открытие файла
Функция fopen() открывает для использования поток, связывает файл с данным потоком и затем возвращает указатель типа FILE на данный поток. Функция fopen() имеет прототип:
FILE *fopen (const char *filename, const char *mode);
где filename указывает на строку, содержащую имя файла, а mode указывает на строку, содержащую желаемый режим открытия файла (таблица 1).
Таблица 1 – Режимы открытия файла
-
Режим
З н а ч е н и е
“r”
Открывает файл для чтения (по умолчанию текстовый )
“w”
Открывает файл для записи (по умолчанию текстовый )
“a”
Присоединяет к файлу (по умолчанию текстовый )
“rb”
Открывает двоичный файл для чтения
“wb”
Открывает двоичный файл для записи
“ab”
Присоединяет (открывает для добавления)
“r+”
Открывает файл для чтения/записи (по умолчанию. текстовый)
“w+”
Создает файл для чтения/записи (по умолчанию текстовый)
“a+”
Присоединяет или создает файл для чтения/записи (по умолчанию текстовый)
“r+b”
Открывает двоичный файл для чтения/записи
“w+b”
Создает двоичный файл для чтения/записи
“a+b”
Присоединяет или создает двоичный файл для чтения/записи
“rt”
Открывает текстовый файл для чтения
“wt”
Создает текстовый файл для записи
“at”
Присоединяет к текстовому файлу
“r+t”
Открывает текстовый файл для чтения
“w+t”
Создает текстовый файл для чтения/записи
“a+t”
Открывает или создает текстовый файл для чтения/записи
Примечание. При использовании “r” или “a” поток должен существовать.
Функция fopen() возвращает указатель базового типа FILE. Данный указатель идентифицирует файл и используется большинством функций файловой системы. Его никогда не следует изменять самостоятельно. Функция fopen() возвращает нулевой указатель (NULL), если файл не может быть открыт.
Если необходимо открыть файл с именем “a:\file1.dat” на запись, следует записать:
FILE *fp;
. . .
fp = fopen(“a:\file1.dat”, “w”);
или лучше
FILE *fp;
. . .
if ((fp = fopen(“a:\file1.dat”, “w”) = = NULL) {
puts(“Не могу открыть файл”)ж
exit(1); }
else puts(“Файл открыт для записи”);
Данный способ позволяет обнаружить ошибки при открытии файла, например, наличие защиты от записи на дискете или отсутствие свободного места.
Если fopen() используется для открытия файла на запись, то любой ранее существующий файл с указанным именем будет удален. Если его не существует, то он будет создан.
Для дозаписи информации в файл следует использовать режим “a”. Если файл не существует, то он будет создан.
Открытие файла на чтение требует наличия файла. Если файл не существует, то будет возвращена ошибка.
Если файл открыт для операции чтения/записи, то он не удаляется при наличии и, если его нет, то создается.