Pessoal, estou com um problema na manipulação de strings no Arduino. Não sei se é um problema de ponteiros que não estou encontrando e está estragando tudo ou se são dois problemas separados (acho que são dois).

Problema 1) Ao copiar uma string "1234560001a" usando "txt.toCharArray" da classe "String", está copiando um caracter a menos, ou seja, a cópia no buffer fica apenas com "1234560001", sem o "a" no final;

Problema 2) Ao carregar "txt" com outro texto qualquer e copiar seu conteúdo para o segundo buffer "ss2", está sobrescrevendo o conteúdo de "ss1" também, que em teoria deveria manter o conteúdo "1234560001a" inicial.

Alguém pode me orientar?

Segue o código para simular:

void setup() {
char* ss1 = "";
char* ss2 = "";
String txt = "";

Serial.begin(115200);

txt = "1234560001a";
txt.toCharArray(ss1, txt.length());

Serial.printf("\n\n");
Serial.printf("ss1 = %s\n", ss1); // Imprime "1234560001" sem o caracter "a" do final

// Neste caso força incorretamente "ss1" se tornar igual "ss2" e também remove o último caracter
txt = "abcdef";
txt.toCharArray(ss2, txt.length());

Serial.printf("ss1 = %s\n", ss1); // "ss1" fica igual "ss2" ?!?! E imprime "abcde" sem o caracter "f"
Serial.printf("ss2 = %s\n", ss2); // Imprime "abcde" também
}

Exibições: 1131

Responder esta

Respostas a este tópico

Sim, eu acabei verificando isso depois, mas ainda estou com o segundo problema, em que o conteúdo da segunda variável está sobrescrevendo o conteúdo da primeira (se rodar o exemplo aparece o problema).

Obrigado pelo retorno.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço