Запись и чтение массива чисел в бинарный файл с++
После чтения из файла массив чисел превращается в нечто. Как получить те же числа, что и при записи?
#include <iostream>
using namespace std;
void printFile(const char* filename) {
cout << "File " << filename << ":" << endl;
FILE* f;
int buffer;
f = fopen(filename, "rb");
while (true) {
fread(&buffer, sizeof(int), 1, f);
if (feof(f)) break;
cout << buffer << " ";
}
cout << endl;
fclose(f);
}
void createRandomFile(int N) {
FILE* F;
F = fopen("A.bin", "wb");
srand(time(NULL));
int a[N];
for (int i = 0; i < N; i++) {
a[i] = rand() % 100;
}
fwrite(&a, sizeof(a), 1, F);
fclose(F);
}
void split(int N) {
FILE *F;
FILE *F1;
FILE *F2;
F = fopen("A.bin", "wb");
F1 = fopen("B.bin", "wb");
F2 = fopen("C.bin", "wb");
int a[N], bc = 0, cc = 0;
fread(&a, sizeof(a), 1, F);
for (int i = 0; i < N; i++) {
cout << a[i] << ' ';
//if (a[i] % 2 == 0) {
// cc++;
//} else {
// bc++;
//}
}
cout << bc << ' ' << cc << endl;
//int b[bc], c[cc];
//for (int i = 0; i < N; i++) {
// if (a[i] % 2 == 0) {
// fwrite(c, sizeof(c), 1, F2);
// } else {
// fwrite(b, sizeof(b), 1, F1);
// }
//}
fclose(F);
fclose(F1);
fclose(F2);
}
int main() {
int N;
cin >> N;
createRandomFile(N);
printFile("A.bin");
split(N);
printFile("B.bin");
printFile("C.bin");
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Кирилл Протасов
→ Ссылка
Я забыл чтение поставить)) и читал из файла, хотя тот был открыт на запись)