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— это индексы символов в этой строке. Таким образом, в результате выполнения данного кода, строка будет копирована, при этом последний символ исходной строки останется неизменным.