Ошибка при работе со структурами: Expression must be a modifiable lvalue - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравтсвуйте, не могу найти ошибку в коде:
#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 В чём проблема?

Решение задачи: «Ошибка при работе со структурами: Expression must be a modifiable lvalue»

textual
Листинг программы
tmp = Student[j + 1].konkurs;

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. Переменной tmp присваивается значение Student[j + 1].konkurs.
  2. Выполняется проверка на то, что Student[j + 1].konkurs является модифицируемым значением.
  3. Ошибка Expression must be a modifiable lvalue указывает на то, что Student[j + 1].konkurs не является модифицируемым значением.
  4. В результате выполнения кода возникает ошибка.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы