Resulta que en C, no puedes asignarle a una variable iniciada un string de esta forma.
Primero porque no es posible, si está iniciada, segundo, porque cuando haces
*cadena no estás señalando al string completo, si no a la dirección de primer elemento. Recuerda que los
string en C son es una matriz.
Por consecuente, se puede así.
strcpy es una función que copia una cadena en una variable.
Saludos.