![](/user_photo/2706_HbeT2.jpg)
- •Методичні вказівки
- •1 Директивипрепроцесора. Багатомодульне програмування
- •1.1 Мета роботи
- •1.2 Вказівки щодо організації самостійної роботи студентів
- •1.3 Порядок виконання роботи
- •1.4 Контрольні запитання та завдання
- •1.5 Завдання
- •1.6 Варіанти завдань
- •1.7 Контрольний приклад
- •2.1 Мета роботи
- •2.2 Вказівки щодо організації самостійної роботи студентів
- •2.3 Порядок виконання роботи
- •2.4 Контрольні запитання та завдання
- •2.5 Завдання
- •2.6 Варіанти завдань
- •2.7 Контрольний приклад
- •3 Файлові потоки мови с
- •3.1 Мета роботи
- •3.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •3.3 Порядок виконання роботи
- •3.4 Контрольні запитання та завдання
- •3.5 Завдання
- •3.6 Варіанти завдань
- •3.7 Контрольний приклад
- •4 Перегрузка операцій
- •4.1 Мета роботи
- •4.2 Вказівки щодо організації самостійної роботи студентів
- •4.3 Порядок виконання роботи
- •5.1 Мета роботи
- •5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты
- •Инкапсуляция
- •Конструктор
- •Деструктор
- •Указатели на объекты
- •Операции new и delete
- •5.3 Порядок виконання роботи
- •5.4 Контрольні запитання та завдання
- •5.5 Завдання
- •5.6 Варіанти завдань
- •5.7 Контрольний приклад
- •6 Наслідування, поліморфізм, інкапсуляция
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Наследование
- •Уровни доступа
- •Виртуальные функции
- •Механизм работы виртуальных функций
- •Полиморфизм
- •Множественное наследование
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •6.7 Контрольний приклад
- •Рекомендована література
- •61166 Харків, просп. Леніна, 14.
2.7 Контрольний приклад
В файле храниться информацию о студентах. Необходимо считать данные из файла и записать их в бинарный файл. Затем считать оттуда их оттуда и вывести на экран в форматированном виде а также записать их текстовой файл в таком же форматированном виде
Тескстовый файл f1.txt хранить следующую информацию
Сидоров
3
Максименко
5
Петров
2
Клименко
6
На экране и в текстовом файле f3.txt будет выведена следующая информация
Начало
Result:
Сидоров................................3
Максименко.............................5
Петров.................................2
Клименко...............................6
Конец
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
struct Tstud{
char FIO[90];
int data;
};
int main()
{
int i;
const int n=4;
cout<<"Начало"<<endl;
ifstream innn("f1.txt");//файл для чтения
Tstud PM[n];
char str[90];
//Чтение информации из файла
for(i=0;i<n;i++)
{
innn.getline(PM[i].FIO,90);
innn.getline(str,90);
PM[i].data=atoi(str);
}//конец чтения из файла
//запись в бинарный файл
ofstream binout("f2.txt",ios::binary); //поток для записи в бинарный файл
binout.write((char*)&PM[0],sizeof(Tstud)*n);
binout.close();
//конец записи в бинарный файл
Tstud PM2[n];
//чтение из бинарного файла
ifstream bincin("f2.txt",ios::binary); //поток для чтения из бинарного файла
for(i=0;i<n;i++)
{
bincin.read((char*)&PM2[i],sizeof(Tstud));
//bincin.read((char*)&PM2[0],sizeof(Tstud)*n);
}
bincin.close();
//конец чтения из бинарного файла
cout<<"Result: "<<endl;
for(i=0;i<n;i++)
{
cout<<resetiosflags(ios::right);
cout.setf(ios::left);
cout<<setw(20)<<setfill('.');//тоже самое что и cout.width(20); cout.fill('.');
cout<<PM2[i].FIO;
cout.width(20);//тоже самое что и cout<<setw(20);
cout.setf(ios::right);
cout<<PM2[i].data<<'\n';
}
ofstream out("f3.txt",ios::binary); //Запись текстового файла
for(i=0;i<n;i++)
{
out<<resetiosflags(ios::right);
out.setf(ios::left);
out<<setw(20)<<setfill('.');//тоже самое что и cout.width(20); cout.fill('.');
out<<PM2[i].FIO;
out.width(20);//тоже самое что и cout<<setw(20);
out.setf(ios::right);
out<<PM2[i].data<<'\n';
}
bincin.close();
cout<<endl;
cout<<"Конец"<<endl;
cin.get();
return 1;
}
3 Файлові потоки мови с
3.1 Мета роботи
3.2 Вказівки щодо організації самостійної роботи студентів
Поток является программной надстройкой над файлом, предоставляющей программисту дополнительный сервис. Схема работы с потоком такая же, как и с файлом: открыть поток, выполнить чтение и/или запись, закрыть поток.
Открывает поток вместе с ассоциированным файлом функция
FILE* fopen(const char *filename, const char *mode )
Функция получает имя filenameфайла, ассоциированного с потоком, и возвращает указатель на поток, который идентифицирует его в последующих операциях.
В строке режимов modeмогут находиться следующие символы:
r — открыть только для чтения.
w — создать для записи. Существующий файл будет перекрыт новым файлом.
a — открыть для дозаписи, или создать для записи, если файла нет
+ — операции будут выполняться с уже существующим файлом.
t — текстовый режим (обработка символов CR-LF).
b — двоичный режим (никакой обработки).
При отсутствии в строке символов b или t, режим определяется глобальной переменной _fmode, определенной в заголовочном файле fcntl.h.
FILE — это управляющая структура для потока, объявленная в stdio.h. Она не предназначена для прямого использования.
Помимо совместного открытия потока и файла (fopen), можно открыть поток и ассоциировать его с уже открытым файлом (fdopen), открыть файл и ассоциировать его с уже открытым потоком (freopen).
Закрывает поток и выгружает буферы функция
int fclose ( FILE *stream )
Функция возвращает 0 при успехе и константу EOF при ошибке.
Функция int fcloseall() закрывает все открытые потоки, кроме стандартных: stdin, stdout, stdprn, stderr и stdaux.