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


/* Сортировка массива структур студент. Шаг 2 */
//коммент 1 массив и создать 2 массив и сортировать по алфавиту через pointers[MAXN];

#include <stdio.h>
#include <locale.h>
typedef int t_id;
typedef int t_age;
typedef char t_name[40];

typedef struct {
	int id;
	int age;
	char name[40];
} t_student;

#define MAXN 100
int main(void) {
	setlocale(LC_ALL, "");
	char *fname = "data.txt";
	t_student ar[MAXN];
	t_student* pointers[MAXN];
	FILE *fh = fopen(fname, "r");
	if (fh == NULL) {
		perror("WOW");
		getchar();
		return 1;
	}
	int count = 0;
	t_student st;
	while (count < MAXN && 
		3 == fscanf(fh, "%d%s%d", &st.id, st.name, &st.age)
		) {
		ar[count] = st;
		++count;
	}
	
	for (int i = 0; i < count; ++i) {
		pointers[i] = &ar[i];
	}
	
	// sort
	for (int i = 0; i < count-1; ++i) {
		int imin = i;
		for (int j = i+1; j < count; ++j) {
			if (pointers[j]->age < pointers[imin]->age) { imin = j; }
		}
		if (i != imin) {
			t_student *temp = pointers[imin];
			pointers[imin] = pointers[i];
			pointers[i] = temp;
		}
	}
	
	fclose(fh);
	printf("count=%d\n", count);
	for (int i = 0; i < count; ++i) {
		printf("%d.%s: %d\n", pointers[i]->id, pointers[i]->name, pointers[i]->age);
	}
	return 0;
}