Я использую Arduino с кучей библиотек, поэтому он будет слишком кластеризован, чтобы размещать здесь весь код.Точки, которые ссылаются на строковый указатель:
char* entrada; //global strings without assigned value declared here
char* entrada2; //
Позже, в цикле void, который является основной функцией:
entrada = "some lots of text written here"; //assigning value to the string
...
while (1) {
funcao(); //calls in for a function, which can't have parameters for an unrelated problem
}
В функции я изменю значениев строке, но не хочу терять свое первоначальное значение, поэтому я назначаю его содержимое другому
void funcao() {
char *texto = entrada;
int tamanho = strlen(texto);
int rtn_ctrl =1;
...
do {
for(int i=1; i<=tamanho; i++){ //moves every char in n to n-1
texto[i-1] = texto[i];
}
texto[tamanho - rtn_ctrl] ='\0'; //null in the last position of the string
...
rtn_ctrl++;
} while (rtn_ctrl<=tamanho-(8); //by the end of this loop, many positions of the string will be '\0';
return 0;
}
Функция выполняется правильно при первом выполнении.Однако, когда я вызываю его снова в главном цикле, строковые значения, которые должны быть повторно объявлены в функции, не сбрасываются обратно в «entrada».То есть все его позиции по-прежнему '\ 0'.