Работа с двоичными файлами
Двоичные файлы отличаются от текстовых тем, что в них записана информация во внут-
реннем машинном представлении. Двоичный файл нельзя просмотреть на экране (вернее, можно просмотреть, но очень сложно понять). Но есть и преимущества – из двоичных файлов можно читать сразу весь массив в виде единого блока. Также можно записать весь массив или его любой непрерывный кусок за одну команду.
При открытии двоичного файла вместо режимов "r", "w"и "a"используют соответст-
венно "rb", "wb"и "ab". Дополнительная буква "b"указывает на то, что файл двоичный(от английского слова binary – двоичный). Приведем решение одной задачи, которую мы уже разбирали ранее.
Пример. Ввести массив из 10 целых чисел из двоичногофайла input.dat, умножить каждый элемент на 2 и вывести в двоичныйфайл output.dat.э
Для чтения из двоичного файла используется функция fread, которая принимает 4 пара-
метра:
• адрес области в памяти, куда записать прочитанные данные (в данном случае это адрес первого элемента массива A, который обозначается как &A[0]или просто A);
• размер одного элементаданных (лучше сделать так, чтобы машина сама определила
его, например, в нашем случае – sizeof(int)– размер целого числа. Хотя в Dev-
C++ целое число занимает 4 байта, в в других системах программирования это может
быть не так; наша программа будет работать и в этом случае, то есть станет переносимой на другую платформу;
• количество элементовданных в массиве (N);
• указатель на открытый файл, откуда читать данные (fp).
Функция freadвозвращает количество успешно прочитанных элементов массива – ее возвращаемое значение можно использовать для обработки ошибок. Если функция freadвернула значение, меньшее, чем N, в файле не хватает данных.
Для записи массива в двоичный файл используется функция fwriteс такими же параметрами; она возвращает количество успешно записанных элементов.
Преимущество этого способа состоит в том, что массив читается и записывается сразу
единым блоком. Это значительно увеличивает скорость записи на диск (в сравнении с выводом в текстовый файл отдельно каждого элемента).
Дата добавления: 2015-10-05; просмотров: 670;