Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ_Прог_1курс_2n1часть.doc
Скачиваний:
11
Добавлен:
13.04.2015
Размер:
735.74 Кб
Скачать

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.