Отсортировать структуру по одному из полей - C (СИ) (69570)

Формулировка задачи:

Не получается сделать сортировку, уже много чего перепробовал, помогите пожалуйста
#define _CRT_SECURE_NO_WARNINGS
#include <sys/stat.h>
#include <memory.h>
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#include <locale.h>
struct uchs
{
    char klass[20];
    int year;
    char name[20];
    int str;
    char rasp[150];
 
};
int main()
{
    int i;
    int s;
    struct uchs arr[100]; //100 ГґГ*ìèëèé Г¬Г*êñèìóì
    int count_uch = 0; //Г±Г·ГҐГІГ·ГЁГЄ ГґГ*ìèëèé
    int d = 8;
    //int j, k;
    int a = 0;
    int fh = _open("file.dat", _O_RDWR | _O_BINARY); //ïðîâåðÿåì, Г±ГіГ№ГҐГ±ГІГўГіГҐГІ ëè ГґГ*éë
 
 
    if (fh == -1)
    {   //åñëè Г*ГҐ Г±ГіГ№ГҐГ±ГІГўГіГҐГІ, ñîçäГ*ГҐГ¬
 
        fh = _creat("file.dat", _S_IREAD | _S_IWRITE);
        if (fh == -1)
            return 1;
    }
    //ïîêГ* Г*ГҐ ГЄГ®Г*ГҐГ¶ ГґГ*éëГ* ñ÷èòûâГ*ГҐГ¬ ГЁГ*ГґГі Гў Г¬Г*Г±Г±ГЁГў ñòðóêòóð
    while (!_eof(fh))
    {
        _read(fh, &arr[count_uch], sizeof arr[count_uch]);
        count_uch++;  //óâåëè÷èâГ*ГҐГ¬ Г°Г*çìåðГ*îñòü Г¬Г*Г±Г±ГЁГўГ* Г*Г* 1 Г± ГЄГ*æäûì Г±Г·ГЁГІГ*Г*Г*ûì ýëåìåГ*òîì
    }
    do
    {
        setlocale(LC_ALL, "Rus");
        system("cls"); //î÷èñòêГ* ГЅГЄГ°Г*Г*Г*
        printf("1: ÄîáГ*ГўГЁГІГј Г§Г*ГЇГЁГ±Гј\n2: Âûâåñòè ГЁГ*ôîðìГ*öèþ Г® ГўГ±ГҐГµ ГіГ·ГҐГ*ГЁГЄГ*Гµ\n 3: îòñîðòèðîâГ*ГІГј:\n0: Г‡Г*êðûòü ïðîãðГ*ììó\nÂûáåðèòå ГЇГіГ*ГЄГІ: ");
        scanf("%d", &d);
        switch (d) //ìåГ*Гѕ
        {
        
        case 1: {
                    setlocale(LC_ALL, "Rus");
                    //äîáГ*âëåГ*ГЁГҐ Г*îâîé Г§Г*ГЇГЁГ±ГЁ
                    printf("Ââåäèòå èìÿ/ГґГ*ìèëèþ: ");
                    fflush(stdin);
                    gets(arr[count_uch].name);
 
 
                    printf("Ââåäèòå ГЄГ«Г*Г±Г± ГіГ·ГҐГ*ГЁГЄГ*: ");
                    fflush(stdin);
                    gets(arr[count_uch].klass);
                    printf("Ââåäèòå ñêîëüêî ëåò ГіГ·ГҐГ*ГЁГЄГі: ");
                    fflush(stdin);
                    scanf("%d", &arr[count_uch].year);
 
                    printf("Ââåäèòå ñêîëüêî äåГ*ГҐГЈ Г*Г* ГЄГ*ðòî÷êå Гі ГіГ·ГҐГ*ГЁГЄГ*: ");
                    fflush(stdin);
                    scanf("%d", &arr[count_uch].str);
                    printf("Ââåäèòå Г°Г*Г±Г±ГЇГЁГ±Г*Г*ГЁГҐ ГіГ·ГҐГ*ГЁГЄГ*: ");
                    fflush(stdin);
                    gets(arr[count_uch].rasp);
                    count_uch++;
                    break; }
                    
                    case 2: {setlocale(LC_ALL, "Rus");
                    for (i = 0; i<count_uch; i++)
                    {
                    
 
                        printf("\%s \n%s \n%d  \n%d\n%s\n", arr[i].name, arr[i].klass, arr[i].year, arr[i].str, arr[i].rasp);
 
                    } _getch();
 
                    break; }
 
 
 
 
        case 3:
        {
                  printf("Ñïèñîê îòñîðòèðîâГ*Г*!");
                  
                  for (int i = 0; i < sizeof (arr[count_uch].year); i++)
                  {
                      for (int j = 0; j < sizeof (arr[count_uch].year); j++)
                      {
                          if (arr[i].year > arr[j].year)
                          {
                              uchs s_arr = arr[count_uch];
                              arr[i] = arr[j];
                              arr[j] = s_arr;
                          }
                      }
                  }
                  _getch();
                  break; }
                  }
 
        }
        while (d != 0); 
        return 0;
    }

Код к задаче: «Отсортировать структуру по одному из полей - C (СИ) (69570)»

textual
case 7:
        {
                  printf("Список отсортирован!");
 
                  for (int i = 0; i < count_uch - 1; i++)
                  {
                      for (int j = 0; j < count_uch - 1 - i; j++)
                      {
                          if (arr[i] > arr[j])
                          {
                              uchs s_arr = arr[j];
                              arr[j] = arr[j + 1];
                              arr[j + 1] = s_arr;
                          }
                      }
                  }
                  _getch();
                  break; }

12   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ