#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define GAKUSEI_MAX 100
#define BUF_SIZE 256

int main()
{
	FILE *file;
	char buf[BUF_SIZE];
	int a[GAKUSEI_MAX][4];
	int t[4];
	int ninzuu, kamoku, i, j;

	printf("学生の人数を入力してください。");
	do {
		scanf("%d", &ninzuu);
	} while (GAKUSEI_MAX < ninzuu);

	// 読み込み
	file = fopen("seiseki.txt", "rt");
	if (file == NULL) {
		return 1;
	}
	fgets(buf, BUF_SIZE, file); // ヘッダ行読み飛ばし
	for (i = 0; i < ninzuu; i++) {
		j = fscanf(file, "%d%d%d%d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
		if (j != 4) break;
	}
	ninzuu = i;
	fclose(file);

	printf("科目番号を入力してください。\n");
	printf("1:国語、2:数学、3:英語\n");
	do {
		scanf("%d", &kamoku);
	} while (kamoku < 1 || 3 < kamoku);

	// 並べ替え
	for (i = 0; i < ninzuu-1; i++) {
		for (j = 0; j < ninzuu-1-i; j++) {
			if (a[j][kamoku] > a[j+1][kamoku]) {
				memcpy(t, a[j], sizeof t);
				memcpy(a[j], a[j+1], sizeof t);
				memcpy(a[j+1], t, sizeof t);
			}
		}
	}

	// 書き込み
	file = fopen("write.txt", "wt");
	if (file == NULL) {
		return 1;
	}
	for (i = 0; i < ninzuu; i++) {
		fprintf(file, "%d %d %d %d\n", a[i][0], a[i][1], a[i][2], a[i][3]);
	}
	fclose(file);

	return 0;
}
