Функции

Лекция 15

Бинарные файлы

Текстовые файлы удобны, поскольку информация в них приведена в привычной для человека форме. Но они не обладают той гибкостью при вводе и выводе, которой обладают двоичные или бинарные файлы. Бинарные файлы еще называются неформатируемыми, так как в них информация не разбивается на строки, как в текстовых, а хранится сплошным потоком или в «сыром» виде.

В С++ для бинарных файлов поддерживается широкий диапазон функций ввода и вывода. Они дают возможность точно контролировать процессы считывания из файлов и записи в них.

На нижнем уровне двоичного ввода и вывода находятся функции соответственно get( ) и put( ).

Функция get( ) позволяет считывать один байт информации из связанного потока и передавать его значение аргументу символ по ссылке. При считывании символа конца файла функция возвращает вызывающему потоку значение false.

Функция put( ) обеспечивает запись одного байта информации, записывая символ в поток по ссылке.

Синтаксис оператора открытия бинарного файла имеет вид:

 

имя ф. переменной.open (“путь и имя физич. файла.bin”, ios::binary||ios::in);

Например:

f.open(“c:\\EAPU\\a\\isd.bin”, ios::binary||ios::in);

Здесь f – имя файловой переменной,

c:\\EAPU\\a\\isd.bin – соответственно путь и имя физического файла, с которым связывается файловая переменная f,

ios::binary – режим ввода двоичный,

ios::in – режим доступа (чтение).

Аналогично открывается файл для записи:

 

f.open(“c:\\EAPU\\a\\res.bin”, ios::binary||ios::out);

Здесь c:\\EAPU\\a\\res.bin – путь и имя физического файла, куда производится запись информации, о чем говорит спецификация доступа ios::out.

В С++ имеется еще и другая возможность ввода и вывода информации с бинарными файлами. Она позволяет перемещать информацию не по одному байту, а блоками. Для этого предусмотрены две функции:

read ( ) // для чтения,

write ( ) // для записи.

Примером побайтового ввода и вывода в двоичном формате может быть следующая программа:

# include <fstream.h>

void main( )

{

char ch;

fstream f1, f2;

f1.open(“c:\\EAPU\\a\\isd.bin”, ios::binary||ios::in);

f2.open(“c:\\EAPU\\a\\res.bin”, ios::binary||ios::out);

do

{

f1. get(ch);

f2. put(ch);

}

while ( ! f1. eof( ));

f1. close( );

f2. close( );

}

Здесь информация из файла isd.bin по одному байту перемещается в файл res.bin.

Основной программной единицей алгоритмического языка С++ является функция.

Функция – это самостоятельная программная единица, предназначенная для решения конкретной, локальной задачи.

В программе может использоваться несколько различных функций, каждая из которых имеет свою специализацию. Например, одна функция осуществляет ввод ряда чисел с клавиатуры, другая функция выполняет ввод с внешнего файла, третья производит сортировку чисел по возрастанию и т. д. Образно говоря, функции – это различные детали (модули), из которых «строится» программа вычислений.