В языке C++ иногда требуется считать из бинарного файла достаточно крупные объемы данных, при этом как-то классифицировав и разделив на переменные. Для этого прекрасно подходит одна из функций библиотеки cstdio – fread.Эта же функция есть и в более старой библиотеке stdio.h.
Функция выглядит так:
1 |
size_t fread( void * ptrvoid, size_t razm, size_t count, FILE * filestream ); |
где каждый из параметров сильно влияет на получаемый результат:
- void * ptrvoid - указатель на переменную, в которую мы считываем данные из файла;
- size_t razm - размер одного считываемого элемента в байтах, чтобы не считать размер часто пишут что-то похожее на sizeof(int) или sizeof(пользовательский тип);
- size_t count - количество считываемых элементов;
- FILE *filestream - файловая переменная того файла, из которого мы читаем. Так же после выполнения функция возвращает количество успешно считанных сущностей, что можно использовать для отслеживания сбоев. Рассмотрим конкретный пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <cstdio> #include <cstdlib> // подключаем system("pause") using namespace std; int main() { FILE* ptrFile = fopen( "file.txt" , "rb" ); char buffer[13]; fread(buffer, sizeof(char), 12, ptrFile); fclose (ptrFile); printf("%s",buffer); system("pause"); } |
В примере сначала открываем файл, после объявляем строку. Используя функцию fread, считываем 12 элементов размера sizeof(char). Закрываем файл и выводим строку на экран.