El problema es que (en el primer caso) nombre es un puntero a vaya dios a saber donde, asignale un valor reservado memoria:
Código:
char *nombre = (char*)malloc(strSize);
PD. Calcula strSize (partiendo de wxnombre), es como minimo el tamaño de la cadena en caracteres mas uno (el cero terminador de cadena).