Работа с двоичными файлами

Двоичные файлы отличаются от текстовых тем, что в них записана информация во внут-

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

При открытии двоичного файла вместо режимов "r", "w" и "a" используют соответст-

венно "rb", "wb" и "ab". Дополнительная буква "b" указывает на то, что файл двоичный(от английского слова bina ry двоичный). Приведем решение одной задачи, которую мы уже разбирали ранее.

Пример. Ввести массив из 10 целых чисел из двоичного файла input.dat, умножить каждый элемент на 2 и вывести в двоичный файл output.dat. э

Для чтения из двоичного файла используется функция fread, которая принимает 4 пара-

метра:

адрес области в памяти, куда записать прочитанные данные (в данном случае это адрес первого элемента массива A, который обозначается как &A[0] или просто A);

размер одного элемента данных (лучше сделать так, чтобы машина сама определила

его, например, в нашем случае – sizeof(int) – размер целого числа. Хотя в Dev-

C++ целое число занимает 4 байта, в в других системах программирования это может

быть не так; наша программа будет работать и в этом случае, то есть станет переносимой на другую платформу;

количество элементов данных в массиве (N);

указатель на открытый файл, откуда читать данные (fp).

Функция fread возвращает количество успешно прочитанных элементов массива – ее возвращаемое значение можно использовать для обработки ошибок. Если функция fread вернула значение, меньшее, чем N, в файле не хватает данных.

Для записи массива в двоичный файл используется функция fwrite с такими же параметрами; она возвращает количество успешно записанных элементов.

Преимущество этого способа состоит в том, что массив читается и записывается сразу

единым блоком. Это значительно увеличивает скорость записи на диск (в сравнении с выводом в текстовый файл отдельно каждого элемента).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: