Non capisco cosa c sia d sbagliato
codice:int main(){ char *x; strcpy(x,"c"); printf("%s",x); }
Non capisco cosa c sia d sbagliato
codice:int main(){ char *x; strcpy(x,"c"); printf("%s",x); }
ciao , x è un puntatore , dovresti allocare spazio in memoria con la malloc()
cosi non sai neanche a cosa punta x
Tecnologia
Come ti ha fatto notare torn24,x è un puntatore a carattere ed ha bisogno di un'allocazione di spazio.Non capisco cosa c sia d sbagliato
codice:int main(){ char *x; strcpy(x,"c"); printf("%s",x); }
Puoi farlo in due modi:
-Attraverso la malloc
-Attraverso la calloc
Personalmente preferisco farlo attraverso la calloc perchè questa funzione iniializza a 0 l'area di memoria.
![]()
Qui la calloc non dà alcun vantaggio rispetto a malloc, dato che comunque l'area di memoria viene sovrascritta dai dati copiati dalla strcpy.![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Sì,in questo caso non cambia niente.Ma io come linea generale utilizzo la calloc dato che le due funzioni sono equivalentiQui la calloc non dà alcun vantaggio rispetto a malloc, dato che comunque l'area di memoria viene sovrascritta dai dati copiati dalla strcpy.![]()