Convertire un String in char*

Ciao a tutti...
visto che comunque la mia esperienza in C++ è breve vorrei avere conferma sul modo migliore di convertire un dato String in array di char.
Ho utilizzato questo codice ma ottengo a volte dei risultati strani e soprattutto quando faccio il println dell'array riempito dal ciclo mi vengono scritti sul serial monitor sempre alcuni caratteri ASCII che non c'entrano nulla con la String iniziale:

  String T;
  int i;
  T="Ciao 123 prova";
  char* TC[T.length()];
  for (i=0;i<T.length();i++){
    TC[i]=T.charAt(i);
  }

è corretto??

Grazie :stuck_out_tongue:

Non conosco la libreria "string" e il tuo codice mi sembra sbagliato, per prova ad aggiungere il carattere "\0" alla fine dell'array di caratteri.

Una costante letterale in C termina sempre con il terminatore di stringa "\0"

char mia_stringa[] = "una stringa";

viene tradotto in "una stringa\0", per cui l'array richiede un elemento in più per ospitare il terminatore "\0"

Ciao.

Qui puoi trovare la descrizione di String: String() - Arduino Reference

Pensavo che il terminatore venisse aggiunto automaticamente e che non occupasse un elemento dell'array vero e proprio.
Quindi dovrei fare così?

  String T;
  int i;
  T="Ciao 123 prova";
  char* TC[T.length()+1];
  for (i=0;i<T.length()+1;i++){
    TC[i]=T.charAt(i);
  }
  TC[T.length()]="\0";

scusa ma tu vuoi un array di caratteri o un array di stringhe? Te lo chiedo perchè char* definisce un puntatore, non una variabile

La risposta è qui http://arduino.cc/en/Reference/StringToCharArray

#define buffer_len 10
char buffer[buffer_len];

String objString ("oggetto stringa");
onjString.toCharArray(buffer, buffer_len);

In "buffer" ti ritrovi l'oggetto stringa troncato a 9 caratteri (buffer_len - 1).

Ciao.

Ciao e grazie,
in effetti a me servirebbe di convertire una stringa in char* e non in char[x]... c'è differenza vero? Ho cercato documentazione in merito ma non è molto chiaro, scusate l'ignoranza... :stuck_out_tongue:

La stringa memorizzata nell'oggetto String è già di tipo char ed è puntata con un puntatore char *, quindi non c'è niente da convertire...
Visto che conosci il C++, dai un'occhiata al file WString.h del core di Arduino...
Ciao