Ошибка lvalue required as increment operand - C (СИ)

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

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

Добрый день возник вопрос почему вылетает ошибка lvalue required as increment operand в строке 5
char ch;
char *expr[] = {"my", "w9rd", "the"};
 
ch = (*++expr)[1]; // 5
Сделано по аналогии с книги по Си Кернигана и Ричи вот оригинальная программа:
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000
int getline(char *line, int max);
 
/* find: печать строк образцами из 1-го аргумента */
main(int argc, char *argv[])
{
char line[MAXLINE];
long lineno = 0;
int c, except = 0, number = 0, found = 0;
while (—argc > 0 && (*++argv)[0] == '-')
    while (c = *++argv[0])
        switch (c) {
        case 'x1': -
           except = 1;
           break;
        case ' a' :
           number = 1;
           break;
        default:
           printf( "find: неверный параметр %с\п", с);
           argc = 0;
           found = -1;
           break;
        }
    if (argc != 1)
        рrintf("Используйте: find -x -n образец\n");
    else
         while (getline(line, MAXLINE) > 0) {
            lineno++;
            if ((strstr(line, *argv) != NULL) != except) {
               if (number)
                  printf("%ld:", lineno);
               printf("%s", line);
               ound++;
   return found;
}
Это опечатка в книги или написано по старому стандарту? Прошу также объяснить суть ошибки 2. еще натыкнулся на конструкции которая вызывает ту же ошибку
int i;
i = i + ++i--;

Решение задачи: «Ошибка lvalue required as increment operand»

textual
Листинг программы
ch = (*++expr)[1];

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

В данном коде происходит следующее:

  1. Увеличивается значение переменной expr на 1.
  2. Получается значение выражения, которое хранится в переменной ch.
  3. Значение переменной ch равно значению выражения (*++expr)[1].
  4. Выражение (*++expr)[1] означает, что сначала увеличивается значение переменной expr на 1, а затем из увеличенного значения вырабатывается значение, которое хранится в квадратных скобках и имеет индекс 1. Таким образом, в данном коде значение переменной ch равно значению выражения (*++expr)[1].

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


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

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

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