Ошибка lvalue required as increment operand - C (СИ)
Формулировка задачи:
Добрый день возник вопрос почему вылетает ошибка lvalue required as increment operand в строке 5
Сделано по аналогии с книги по Си Кернигана и Ричи вот оригинальная программа:
Это опечатка в книги или написано по старому стандарту? Прошу также объяснить суть ошибки
2. еще натыкнулся на конструкции которая вызывает ту же ошибку
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;
}int i; i = i + ++i--;
Решение задачи: «Ошибка lvalue required as increment operand»
textual
Листинг программы
ch = (*++expr)[1];
Объяснение кода листинга программы
В данном коде происходит следующее:
- Увеличивается значение переменной
exprна 1. - Получается значение выражения, которое хранится в переменной
ch. - Значение переменной
chравно значению выражения(*++expr)[1]. - Выражение
(*++expr)[1]означает, что сначала увеличивается значение переменнойexprна 1, а затем из увеличенного значения вырабатывается значение, которое хранится в квадратных скобках и имеет индекс 1. Таким образом, в данном коде значение переменнойchравно значению выражения(*++expr)[1].