Ошибка при работе со структурами: Expression must be a modifiable lvalue - C (СИ)
Формулировка задачи:
Здравтсвуйте, не могу найти ошибку в коде:
Ошибку выдаёт в этом месте:
Ссылается на Student и пишет: expression must be a modifiable invue
В чём проблема?
Листинг программы
- #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;
Решение задачи: «Ошибка при работе со структурами: Expression must be a modifiable lvalue»
textual
Листинг программы
- tmp = Student[j + 1].konkurs;
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Переменной
tmp
присваивается значениеStudent[j + 1].konkurs
. - Выполняется проверка на то, что
Student[j + 1].konkurs
является модифицируемым значением. - Ошибка
Expression must be a modifiable lvalue
указывает на то, чтоStudent[j + 1].konkurs
не является модифицируемым значением. - В результате выполнения кода возникает ошибка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д