Лабораторная работа № 12
Запись, дописывание и чтение потоков из файла.
Цель: Научится обмениваться с файлом потоками.
Задача: Создать приложение с формой, которая записывает, дописывает и читает из файла строку. Организовать функцию выхода из программы.
Порядок выполнения:
- Создать проект с формой.
- Задать имя формы Name=Form1
- Задать надпись в верхней части окна Form1->Caption= “ Добавление в файл (работа с потоками)”
- На форму вынести элемент главного меню, задать пункт Файл-Выход и действие Form1->Close();
- На форму вынести элемент Memo: Name= Memo1. Очистить окно Memo1 (Memo->Lines).
- На форму вынести 5 кнопок Button: 1) Name= Button1, Caption=“Добавление строки в файл”, 2) Name= Button2, Caption=“Чтение строки из файла”, 3) Name= Button3, Caption=“Прочитать весь файл”, 4) Name= Button4, Caption=“Очистить файл”, 5) Name= Button5, Caption=“Очистить окно вывода”
- На событие OnClick кнопки Button1 записать код:
int R=2;
char A[14]="Понедельник ";
char B[14]=" день_недели";
ofstream outfile("test2.dat",ios::app);
if (!outfile) {
ShowMessage("Файл не удается создать");
return;
}
else {
outfile <<A<<R<<B<<'\n';
};
outfile.close();
- На событие OnClick кнопки Button2 записать код:
int R1=2;
char A1[14];
char B1[14];
char str [30];
ifstream infile("Test2.dat");
if(!infile)
{
ShowMessage("Файл не удается открыть");
return;
}
infile >>A1>>R1>>B1;
sprintf(str,"%s %d %s ", A1,R1,B1);
// закрытие файла
infile.close();
Memo1->Lines->Add(str);
- На событие OnClick кнопки Button3 записать код: Memo1->Clear();
Memo1->Lines->LoadFromFile("Test2.dat");
- На событие OnClick кнопки Button4 записать код: Memo1->Clear();
ofstream outfile("test2.dat");
if (!outfile) {
ShowMessage("Файл не удается создать");
return;
};
outfile.close();
- На событие OnClick кнопки Button5 записать код: Memo1->Clear();
- Подключить модули <stdio.h>, <fstream.h>
Пояснения к коду программы:
Подключаемые модули:
#include <stdio.h>//подключаются функции форматированного вывода sprintf
#include <fstream.h> //для использования функций ofstream ifstream
На кнопку Добавление строки в файл:
int R=2; //объявляется целочисленная переменная R=2
char A[14]="Понедельник "; /*объявляется символьный массив A с размером 14 элементов и значением "Понедельник " */
char B[14]=" день_недели"; /*объявляется символьный массив B с размером 14 элементов и значением " день_недели" */
ofstream outfile("test2.dat",ios::app); /* открывается выходной поток outfile для дозаписи в файл test2.dat */
if (!outfile) { //если файл не открывается
ShowMessage("Файл не удается создать"); //то выдать сообщение
return; //и выйти из функции
} //конец действий по то
else { //иначе
outfile <<A<<R<<B<<'\n'; //в файл вывести значения A, R, B и символ '\n'
}; //конец действий по иначе
outfile.close(); //закрыть выходной поток (закрыть файл test2.dat )
На кнопку Чтение строки из файла:
int R1; //объявляется целочисленная переменная R1
char A1[14]; //объявляется символьный массив A1 с размером 14 элементов
char B1[14]; //объявляется символьный массив B1 с размером 14 элементов
char str [30]; //объявляется символьный массив str с размером 30 элементов
ifstream infile("Test2.dat"); // открывается входной поток infile для чтения из файла test2.dat
if(!infile) //если файл не открывается
{
ShowMessage("Файл не удается открыть"); то выдать сообщение
return; и выйти из функции
}
infile >>A1>>R1>>B1; //прочитать из файла значение A1, R1, B1
sprintf(str,"%s %d %s ", A1,R1,B1); //вывести A1,R1,B1 в str
infile.close(); // закрытие файла
Memo1->Lines->Add(str); /* значение str вывести как новую строку в многострочное окно редактирования Memo1 */
На кнопку Прочитать весь файл:
Memo1->Lines->LoadFromFile("Test2.dat"); /*записать содержимое файла Test2.dat в многострочное окно редактирования Memo1 */
На кнопку очистить файл:
ofstream outfile("test2.dat"); // открывается выходной поток outfile для записи в файл test2.dat
if (!outfile) { //если файл не открывается
ShowMessage("Файл не удается создать"); //то выдать сообщение
return; //и выйти из фукции
};
outfile.close(); //закрыть выходной поток (закрыть файл test2.dat )
Кнопку Очистить окно вывода:
Memo1->Clear(); //очистить многострочное окно редактирования
Главное меню:
Form1->Close(); //закрыть форму Form1 (закрыть программу)
Анимация выполнения работы:
Pr12.exe (14 MБ) Скачать