La prima versione è quella corretta, nella seconda credo che tu vada a sovrascrivere memoria destinata a qualke altra variabile. Inoltre strcpy (non so scanf) non alloca nuova memoria; se vuoi copiare una stringa in una nuova locazione di memoria devi usare strdup(...)