Я изучаю операции ввода-вывода C ++ и столкнулся с проблемами при чтении из двоичного файла.Я инициализирую массив со 100 случайными значениями и записываю значения в массиве в файл .bin
.Я думаю, что эту часть я отключил - по какой-то причине мой .bin
размер файла составляет 1600 байт вместо 400 - но я борюсь с чтением значений.
Я думал, что можно читать int по int, перебирая массив memblock
, содержащий значения чтения, но мой вывод консоли показывает одно случайное число, за которым следует множество нулей.Буду признателен за ваше руководство.
// reading a binary file int by int
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
int main () {
FILE * pFile;
streampos size;
int * memblock;
srand(time(NULL));
int array[100];
//data to write initially stored in array
for (int i=0;i<100;i++){
array[i]=rand()%100;
}
pFile = fopen("writebinary.bin","wb");
fwrite(array,sizeof(int),sizeof(array),pFile);
fclose(pFile);
ifstream readFile("writebinary.bin",ios::binary | ios::ate);
if (readFile.is_open()){
size = readFile.tellg();
//allocate memory to read file contents
memblock = new int[size];
readFile.seekg(0,ios::beg);
for (int i=0;i<100;i++){ //100 because there are 100 ints,I'm assuming 32 bits are read a at a time from writebinary.bin
readFile.read((char*)memblock,sizeof(int));
}
readFile.close();
}
else {
cout << "can't open file " << endl;
}
for (int i=0;i<100;i++){
cout << memblock[i] << endl;
}
return 0;
}