Не могу понять, в чем ошибка - C (СИ)
Формулировка задачи:
Задание: Сортировка введенных элементов структур(книг). Почему-то компилятор выдает ошибку. Как я понял, проблема таиться в сортировке, а именно в сортировке последнего элемента структуры. Я смог решить проблему добавив еще 1 "пустой" элемент в структуру(Изменив N и подправив циклы) , но такое решение меня не устраивает. Хотел бы узнать, в чем именно причина. Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 3
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int sort = 0, length = 0, j = 0;
struct book {
char author[15];
char name[15];
char vidav[20];
long year;
};
struct book opis[N], struc;
int i;
for (i = 0; i <= N; i++) {
gets_s(opis[i].author, 14);
printf("%s \n", opis[i].author);
gets_s(opis[i].name, 14);
printf("%s \n", opis[i].name);
gets_s(opis[i].vidav, 19);
printf("%s \n", opis[i].vidav);
scanf("%d", &opis[i].year);
printf("%d \n", opis[i].year);
getchar();
}
length = i;
printf("\n \n \n");
for (i = 0; i <= N; i++) {
printf("%15s", opis[i].author);
printf("%20s", opis[i].name);
printf("%20s", opis[i].vidav);
printf("%20d \n", opis[i].year);
}
for (i = 1; i < length; i++) {
struc = opis[i];
for (j = i - 1; (j >= 0) && (opis[j].year <= struc.year); j--) {
opis[j + 1] = opis[j];
}
opis[j + 1] = struc;
}
printf("\n \n \n");
for (i = 0; i <= N; i++) {
printf("%15s", opis[i].author);
printf("%20s", opis[i].name);
printf("%20s", opis[i].vidav);
printf("%20d \n", opis[i].year);
}
system("pause");
return 0;
}Решение задачи: «Не могу понять, в чем ошибка»
textual
Листинг программы
i < N;