Para guardar los datos de retorno, debes usar la variable nodo, ya que antes de guardar el valor, haces :
Por lo que quiere decir, que ahora pila apunta al siguiente nodo, y cuando quiere mostrar el ultimo nodo (que no tiene siguiente nodo), nodo->siguiente es igual a NULL, y cuando llamas a strcpy :
Te da error de violacion de acceso, porque (*pila) es un puntero que no apunta a ningun sitio.
El codigo correcto es :
Código C++:
Ver originalstrcpy(salida.
apellido,nodo
->datos.
apellido); strcpy(salida.
nombre,nodo
->datos.
nombre); salida.valor=nodo->datos.valor;
Nose si me explique bien xD
Saludos.