fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #define GAKUSEI_MAX 100
  6. #define BUF_SIZE 256
  7.  
  8. int main()
  9. {
  10. FILE *file;
  11. char buf[BUF_SIZE];
  12. int a[GAKUSEI_MAX][4];
  13. int t[4];
  14. int ninzuu, kamoku, i, j;
  15.  
  16. printf("学生の人数を入力してください。");
  17. do {
  18. scanf("%d", &ninzuu);
  19. } while (GAKUSEI_MAX < ninzuu);
  20.  
  21. // 読み込み
  22. file = fopen("seiseki.txt", "rt");
  23. if (file == NULL) {
  24. return 1;
  25. }
  26. fgets(buf, BUF_SIZE, file); // ヘッダ行読み飛ばし
  27. for (i = 0; i < ninzuu; i++) {
  28. j = fscanf(file, "%d%d%d%d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
  29. if (j != 4) break;
  30. }
  31. ninzuu = i;
  32. fclose(file);
  33.  
  34. printf("科目番号を入力してください。\n");
  35. printf("1:国語、2:数学、3:英語\n");
  36. do {
  37. scanf("%d", &kamoku);
  38. } while (kamoku < 1 || 3 < kamoku);
  39.  
  40. // 並べ替え
  41. for (i = 0; i < ninzuu-1; i++) {
  42. for (j = 0; j < ninzuu-1-i; j++) {
  43. if (a[j][kamoku] > a[j+1][kamoku]) {
  44. memcpy(t, a[j], sizeof t);
  45. memcpy(a[j], a[j+1], sizeof t);
  46. memcpy(a[j+1], t, sizeof t);
  47. }
  48. }
  49. }
  50.  
  51. // 書き込み
  52. file = fopen("write.txt", "wt");
  53. if (file == NULL) {
  54. return 1;
  55. }
  56. for (i = 0; i < ninzuu; i++) {
  57. fprintf(file, "%d %d %d %d\n", a[i][0], a[i][1], a[i][2], a[i][3]);
  58. }
  59. fclose(file);
  60.  
  61. return 0;
  62. }
  63.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty