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

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

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

Здравтсвуйте, не могу найти ошибку в коде:
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <locale.h>
  5. struct Vuz
  6. {
  7. char name[20];
  8. char address[60];
  9. char spec[100];
  10. char konkurs[50];
  11. int oplata;
  12. };
  13. void quick_struct(struct Vuz *Student, int count);
  14. void qs_struct(struct Vuz *Student, int left, int right);
  15. void read(struct Vuz *Student, int i);
  16. void read(struct Vuz *Student, int i)
  17. {
  18. for (int j = 0; j <i; j++)
  19. {
  20. printf("Введiть назву ВУЗа\n");
  21. scanf("%s", &Student[j].name);
  22. printf("Введiть адресу\n");
  23. scanf("%s", &Student[j].address);
  24. printf("Введiть перелік спеціальностей\n");
  25. scanf("%s", &Student[j].spec);
  26. printf("Введiть конкурс\n");
  27. scanf("%s", &Student[j].konkurs);
  28. printf("Введiть оплату за навчання\n");
  29. scanf("%i", &Student[j].oplata);
  30. }
  31. }
  32. int main()
  33. {
  34. setlocale(LC_ALL, "ukr");
  35. float oplatamax = 0;
  36. struct Vuz Student[5];
  37. read(Student, 5);
  38. FILE *file;
  39. FILE *file2;
  40. quick_struct(Student, 5);
  41. if ((file = fopen("info.txt ", "wb")) == NULL)
  42. {
  43. printf("Помилка при відкритті файлу");
  44. return 1;
  45. }
  46. int tmp, i, j;
  47. for (i = 0; i <= 4 - 1; ++i)
  48. {
  49. for (j = 0; j <= 4 - 1; ++j)
  50. {
  51. if (Student[j + 1].konkurs < Student[j].konkurs)
  52. {
  53. tmp = Student[j + 1].konkurs;
  54. Student[j + 1].konkurs = Student[j].konkurs;
  55. Student[j].konkurs = tmp;
  56. }
  57. }
  58. }
  59. for (int i = 0; i <= 4; i++)
  60. {
  61. fwrite(&Student[i], sizeof(Student), 1, file);
  62. printf("Назва ВУЗу: %s\nАдреса: %s\nПерелік спеціальностей: %s\nКонкурс: %s\n Оплата за навчання: %f\n", Student[i].name,
  63. Student[i].address, Student[i].spec, Student[i].konkurs, Student[i].oplata);
  64. }
  65. fclose(file);
  66. _getch();
  67. return 1;
  68. }
Ошибку выдаёт в этом месте:
Листинг программы
  1. Student[j + 1].konkurs = Student[j].konkurs;
  2. Student[j].konkurs = tmp;
Ссылается на Student и пишет: expression must be a modifiable invue В чём проблема?

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

textual
Листинг программы
  1. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы