Загрузка данных


/*
Гусятинер Л.Б. & 302ИС-23, 18.05.2026 
выгрузить в массив и выгрузить обратно
размер массивак = размеру бинарника
*/
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100
#define SZ_INT sizeof(int)
int main(void) {
	char *txt_name = "in.txt";
	char *bin_name = "in.bin";
	FILE *f_txt = fopen(txt_name, "r");
	FILE *f_bin = fopen(bin_name, "wb");
	int num;
	while (1 == fscanf(f_txt, "%d", &num)) {
		fwrite(&num, sizeof(int), 1, f_bin);
	}
	fclose(f_txt);
	fclose(f_bin);
	f_bin = fopen(bin_name, "rb");
	fseek(f_bin, 0, SEEK_END);
	int size = ftell(f_bin);
	int total = size / sizeof(int);
	int *arr = (int *)malloc(size);
	fseek(f_bin, 0, SEEK_SET);
	for (int i = 0; i < total; i++) {
		fread(&arr[i], sizeof(int), 1, f_bin);
	}
	fclose(f_bin);
	/*
	for (int i = 0; i < total; i++) {
		printf("%d ", arr[i]);
	}
	*/
	f_bin = fopen(bin_name, "r+b");
	int arr_j, arr_imin, arr_i;
	for (int i = 0; i < total-1; i++) {
		int imin = i;
		fseek(f_bin, imin * SZ_INT, SEEK_SET);
		fread(&arr_imin, SZ_INT, 1, f_bin);
		for (int j = i+1; j < total; j++) {
			fseek(f_bin, j * SZ_INT, SEEK_SET);
			fread(&arr_j, SZ_INT, 1, f_bin);
			
			if (arr_j < arr_imin) {
				arr_imin = arr_j;
				imin = j;
			}
		}

		if (i != imin) {
			fseek(f_bin, imin * SZ_INT, SEEK_SET);
			fread(&arr_imin, SZ_INT, 1, f_bin);
			fseek(f_bin, i * SZ_INT, SEEK_SET);
			fread(&arr_i, SZ_INT, 1, f_bin);
			fseek(f_bin, imin * SZ_INT, SEEK_SET);
			fwrite(&arr_i, SZ_INT, 1, f_bin);
			fseek(f_bin, i * SZ_INT, SEEK_SET);
			fwrite(&arr_imin, SZ_INT, 1, f_bin);
		}
	}
	/*
	printf("\n");
	for (int i = 0; i < total; i++) {
		printf("%d ", arr[i]);
	}
	*/
	rewind(f_bin);
	for (int i = 0; i < total; i++) {
		int num;
		fread(&num, sizeof(int), 1, f_bin);
		printf("%d ", num);
	}
	
	fclose(f_bin);
	/*
	printf("\n");
	for (int i = 0; i < total; i++) {
		printf("%d ", arr[i]);
	}
	*/
	
	return 0;
}