Шаг 93.
Microsoft Visual C++ 2010. Язык С/С++.
Ввод и вывод в языках C и C++. Работа с бинарным файлом

    На этом шаге мы рассмотрим особенности работы с файлом такого типа.

    Бинарные файлы, в отличие от потоковых, создаются в определенной логической структуре и поэтому должны читаться в переменную той же структуры. Пример программы приведен ниже, результат работы программы показан на рисунке 1.

// 93_1.cpp: главный файл проекта.

#include "stdafx.h"
#include <iostream> //for cin, cout 
#include <fstream> 
#include <conio.h> 
#include <stdio.h>

#include <clocale>     //обязательно для функции setlocale()

using namespace System; 
using namespace std; // используется стандартное
                     // пространство имен 

void main()
{
	setlocale(LC_ALL,"Russian"); //функция setlocale() с аргументами
	                             //для корректного вывода кириллицы
	//данные о сотрудниках
	struct Blocknotes
	{
		char name[30]; 
		char phone[15]; 
		int age; 
	} b[2] = {
			"Иванов", "123456", 45, 
			"Петров", "456789", 50 
		};  //инициализация массива структур 
	
	//запись данных в файл 
	ofstream FILE;
	FILE.open("Block", ios::binary); 
	for (int i=0; i<2; i++)
		FILE.write((char *)&b[i],sizeof(b[i])); 
	FILE.close();

	//чтение данных из файла 
	ifstream FILE1;
	FILE1.open("Block", ios::binary); 
	Blocknotes bb[2]; 
	int i=0; 
	FILE1.read((char *)&bb[i],sizeof(bb[i]));  
	while(!FILE1.eof() )
	{
		cout << "Строка " << i << ": " << bb[i].name 
			<< "  " <<bb[i].phone << " " << bb[i].age << endl;
		i++;
		FILE1.read((char *)&bb[i],sizeof(bb[i])); 
	}
                FILE1.close();
	system("DEL BLOCK");
	_getch();
}
Архив проекта можно взять здесь.


Рис.1. Результат работы приложения

    Пояснений требуют следующие моменты:

    На следующем шаге мы начнем рассматривать стандартный ввод/вывод в C++.




Предыдущий шаг Содержание Следующий шаг