Здравтсвуйте, не могу найти ошибку в коде, суть в следующем: заполнить информацию о 5 ВУЗах(используя структуры), сохранить в бинарный файл, после чего вывести на экран, в порядке убавления по конкурсу. Вот код:
#define _CRT_SECURE_NO_WARNINGS
#include <math.h>
#include <stdio.h>
#include <locale.h>
struct Vuz
{
char name[20];
char address[60];
char spec[100];
char konkurs[50];
int oplata;
};
void quick_struct(struct Vuz *Student, int count);
void qs_struct(struct Vuz *Student, int left, int right);
void read(struct Vuz *Student, int i);
void read(struct Vuz *Student, int i)
{
for (int j = 0; j <i; j++)
{
printf("Введiть назву ВУЗа\n");
scanf("%s", &Student[j].name);
printf("Введiть адресу\n");
scanf("%s", &Student[j].address);
printf("Введiть перелік спеціальностей\n");
scanf("%s", &Student[j].spec);
printf("Введiть конкурс\n");
scanf("%s", &Student[j].konkurs);
printf("Введiть оплату за навчання\n");
scanf("%i", &Student[j].oplata);
}
}
int main()
{
setlocale(LC_ALL, "ukr");
float oplatamax = 0;
struct Vuz Student[5];
read(Student, 5);
FILE *file;
FILE *file2;
quick_struct(Student, 5);
if ((file = fopen("info.txt ", "wb")) == NULL)
{
printf("Помилка при відкритті файлу");
return 1;
}
int tmp, i, j;
for (i = 0; i <= 4 - 1; ++i)
{
for (j = 0; j <= 4 - 1; ++j)
{
if (Student[j + 1].konkurs < Student[j].konkurs)
{
tmp = Student[j + 1].konkurs;
Student[j + 1].konkurs = Student[j].konkurs;
Student[j].konkurs = tmp;
}
}
}
for (int i = 0; i <= 4; i++)
{
fwrite(&Student[i], sizeof(Student), 1, file);
printf("Назва ВУЗу: %s\nАдреса: %s\nПерелік спеціальностей: %s\nКонкурс: %s\n Оплата за навчання: %f\n", Student[i].name,
Student[i].address, Student[i].spec, Student[i].konkurs, Student[i].oplata);
}
fclose(file);
_getch();
return 1;
}
Ошибку выдаёт в этом месте:
Student[j + 1].konkurs = Student[j].konkurs;
Student[j].konkurs = tmp;
Ссылается на Student и пишет: expression must be a modifiable invue
В чём проблема?