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


void sort_insertion(int (*fn)(char*, char*)){
	// сортировка вставками
	const char *binary = "binary.bin";
	FILE *fb = fopen(binary, "rb+");
	fseek(fb, 0, SEEK_END);
	int flen = ftell(fb) / sizeof(struct Route);
	rewind(fb);
	
	struct Route *far = (struct Route*)calloc(flen, sizeof(struct Route));
	for(int i = 0; i < flen; ++i){
		struct Route tmp;
		fread(&tmp, sizeof(struct Route), 1, fb);
		far[i] = tmp;
	}
	
	for(int i = 0; i < flen-1; ++i){
		int iswap = i;
		for(int j = i+1; j < flen; ++j){
			if(fn(far[j].number, far[iswap].number) == 1) { iswap = j; }
		}
		if (iswap != i){
			struct Route swap = far[iswap];
			far[iswap] = far[i];
			far[i] = swap;
		}
	}
	
	for (int i = 0; i < flen; ++i){
		printf("%s\n", far[i].number);
	}
	
	for(int i = 0; i < flen; ++i){
		fwrite(&far[i], sizeof(struct Route), 1, fb);
	}
	
	free(far);
	fclose(fb);
	putchar('\n');
}

int lh(char* value1, char* value2){
	if (strcmp(value1, value2) < 0) { return 1; }
	else { return 0; }
}

int gh(char* value1, char* value2){
	if (strcmp(value1, value2) > 0) { return 1; }
	else { return 0; }
}