Другие языки программирования и технологии

Сортировка Структур по Алфавиту (Язык Си)

Не получается отсортировать... Где ошибка? (пробовал code > 0 и code < 0) все равно не выходит

int i = 1, n, k, code;
struct STUDENT temp;

for(k = 1; k < 10; k++)

for(n = 1; n < 10 - k; n++)
{
code = strcmp (student1.name, student1[i+1].name);
if(code > 0)
{
temp = student1;
student1 = student1[i+1];
student1[i+1] = temp;
}

}

printf("\nСписок, отсортированный по алфавиту: "
"\nФамилия и инициалы Группа Оценка");
for(k = 1; k < 10; k++)
{
printf("\n%s %d ", student1[k].name, student1[k].number_group);
for (int n = 0; n < 5; n++)
{
printf("%d ", student1[k].result[n]);
}
}
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
#define GROUP 6
#define NAME 28
#define SIZE 1
enum msg { INPUT_NAME, INPUT_GROUP, INPUT_EVALUATION, OUTPUT_NAME, OUTPUT_GROUP, OUTPUT_EVALUATION, SORT };
struct student {
    char name[NAME];
    char group[GROUP];
    unsigned short evaluation;
};
typedef struct student STUDENT;
int sort_function(const void * a,const void * b);
void ui(short);
void space(int);
int main() {
    STUDENT students[SIZE];
    size_t st;
    for (st = 0; st < SIZE; st++) {        
        ui(INPUT_NAME); fflush(stdin); gets_s(students[st].name, NAME); fflush(stdin);
        ui(INPUT_GROUP); scanf_s("%s", students[st].group);
        ui(INPUT_EVALUATION); scanf_s("%hu", &students[st].evaluation); printf("\n");
    }
    qsort(students, SIZE, sizeof(STUDENT), sort_function);
    ui(SORT);
    space(NAME / 4); ui(OUTPUT_NAME); space(NAME / 2); ui(OUTPUT_GROUP); printf("\n");
    for (st = 0; st < SIZE; st++) printf("%-30s%1s\n", students[st].name, students[st].group);
    getchar(); getchar();
    return 0;
}
int sort_function(const void * a, const void * b) { return strcmp((*(STUDENT *)a).name, (*(STUDENT *)b).name); }
void ui(short _msg) {
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    switch (_msg) {
        case INPUT_NAME: printf("Введите фамилия и инициалы: "); break;
        case INPUT_GROUP: printf("Введите группу: "); break;
        case INPUT_EVALUATION: printf("Введите оценку: "); break;
        case OUTPUT_NAME: printf("Фамилия"); break;
        case OUTPUT_GROUP: printf("Группа"); break;
        case OUTPUT_EVALUATION: printf("Оценка"); break;
        case SORT: printf("Список, отсортированные в алфавитном порядке: \n"); break;
    } setlocale(LC_CTYPE, "Russian_Russia.866");
}
void space(int _size) { while (_size--) printf(" "); }
АЧ
Артем Чаплиев
53 032
Лучший ответ
1. разберись со счетчиками (в том числе с границами в циклах)
2.
code = strcmp (student1.name, student1[i+1].name);
замени на
code = strcmp (student1[ n ].name, student1[n+1].name);
для начала.