Error C2065 необъявленный идентификатор - C (СИ) (150964)
Формулировка задачи:
Компилятор пишет что i,pos; cc; -------error C2065 необъявленный идентификатор
Хотя все обозначил.
char* insert_char(char *str) { int i,pos; char cc; str = realloc(str,strlen(str)+1); if (str==NULL){ printf("No Memory"); return NULL;} printf("The Original String is :\n"); present(str); _flushall(cc); printf("Please enter a char pos [0 , %d]: \n",strlen(str)); scanf("%1c %d",&cc, &pos); if( pos < 0 || pos > strlen(str)){ printf("An illigal location\n"); return 0;} else{ for( i=strlen(str)+1; i > pos; --i ) str[i]=str[i-1]; str[i]=cc; printf("The New String is :\n"); present(str); return str; } }
Решение задачи: «Error C2065 необъявленный идентификатор»
textual
Листинг программы
for( i=strlen(str)+1; i > pos; --i ) * * * * str[i]=str[i-1];
Объяснение кода листинга программы
В данном коде выполняется копирование строки, при этом в цикле происходит перестановка символов в строке.
- В первой строке объявляется переменная
i
типа int, которая инициализируется значениемstrlen(str)+1
. Здесьstr
— это указатель на строку, аstrlen(str)
— это функция, которая возвращает длину строки. То есть,i
становится большим значением, равным длине строки плюс один. - Вторая строка содержит условие для цикла while:
i > pos
. Здесьpos
— это также значение типа int, но оно инициализируется значением 0. То есть, цикл будет выполняться до тех пор, пока значениеi
больше значенияpos
. - Третья строка содержит оператор
--i
, который уменьшает значениеi
на единицу после каждой итерации цикла. - В цикле выполняется операция
str[i]=str[i-1]
, которая переставляет символы в строке. Здесьstr
— это указатель на строку, аi
иi-1
— это индексы символов в этой строке. Таким образом, в результате выполнения данного кода, строка будет копирована, при этом последний символ исходной строки останется неизменным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д