Vorrei convertire un char* per farlo diventare un char[].
Ad esempio:
char *str1="ciao";
vorrei farlo diventare
str2=['c',''i','a','o'];
Non ho idea su come farlo... un aiuto?
Vorrei convertire un char* per farlo diventare un char[].
Ad esempio:
char *str1="ciao";
vorrei farlo diventare
str2=['c',''i','a','o'];
Non ho idea su come farlo... un aiuto?
ho risolto così:
E' giusta? Voi conoscete una soluzione migliore?codice:int main(void) { int i=0; char *str = "hello"; char str2[strlen(str)+1]; while(i!=strlen(str)){ str2[i]=str[i]; i++; } str2[i+1]='$'; printf("%s\n",str2); return 0; }
In C89 e in C++ non puoi dichiarare array a dimensione non fissata a compile-time, per cui dovresti usare l'allocazione dinamica o una dimensione fissata sufficientemente grande.
Comunque, per la copia ti basta una strcpy.
Inoltre:
- char * str="hello" non è una buona idea, dato che hai un puntatore ad un'area di memoria che non deve essere modificata (ovvero, se cerchi di modificare lo string literal "hello" a cui fa riferimento str vai in undefined behavior, ovvero, su molte piattaforme, crash); sarebbe corretto const char * str="hello";
- in effetti, se vuoi creare un array di caratteri inizializzato fin da subito ad una certa stringa ti basta fare
codice:char str2[]="hello";
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie MItaly!
Amaro C++, il gusto pieno dell'undefined behavior.