работа с бинарными файлами, чтение и запись
Подскажите пожалуйста, Мне необходимо записать элементы массива (целые числа) в один бинарный файл, затем считать оттуда эти элементы, некоторые изменить и результат (вещественные числа) записать в другой бинарный файл. Открыл hex редактор, ответ вроде бы верный, но почему-то значение последнего элемента массива перескакивает в его начало. На фото правильный ответ 1.0 2.0 3.0 0.1, а вот в файл записалось 0.1 1.0 2.0 3.0, почему, как исправить?
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
int main() {
int n, i, a[10];
float b[10];
FILE * f, * f2;
f = fopen("probb1.dat", "rb+");
do {
printf("Enter n=");
scanf("%i", & n);
} while (n > 10);
fwrite( & n, sizeof(int), 1, f);
for (i = 0; i < n; i++) {
printf("\a(%i)= ", i);
scanf("%i", & a[i]);
}
for (i = 0; i < n; i++) {
printf("%3i", a[i]);
fwrite( & a[i], sizeof(int), 1, f);
}
fclose(f);
f = fopen("probb1.dat", "rb+");
f2 = fopen("probb2.dat", "wb+");
fread( & n, sizeof(int), 1, f);
for (int i = 0; i < n; i++) {
fread( & a[i], sizeof(int), 1, f);
}
for (int i = 0; i < n; i++) {
b[i] = a[i];
if (a[i] > 0) {
if (a[i] % 4 == 0) {
b[i] = 0.1;
}
}
}
fwrite( & n, sizeof(int), 1, f2);
for (int j = 0; j < n; j++) {
fwrite( & b[j], sizeof(float), 1, f2);
}
printf("\n");
for (int j = 0; j < n; j++) {
printf("%4.1f", b[j]);
}
fclose(f);
fclose(f2);
printf("\n");
system("pause");
return 0;
}

