Ошибка при работе со структурами: 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
не является модифицируемым значением. - В результате выполнения кода возникает ошибка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д