Código
char res[1]={'S'}
y por una extraña razon cuando ponia 1 me dañaba el contenido de la pila lo que hice fue cambiarle el tamaño a esa variable y se soluciono todo, parece extraño pero gracias por la ayuda prestada ...
Código
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> typedef struct nodo{ char libro[100]; struct nodo *siguiente; }tiponodo; typedef tiponodo *pnodo; typedef tiponodo *pila; void ingresar(char *a); void push(pila *p,char a[]); void ordenar(pila *p); void mostrar(pila p); int main() { pila p=NULL; char libro[100]; char resp[2]; resp[0]='S' ; while(resp[0]=='S'||resp[0]=='s') { ingresar(libro); push(&p,libro); printf(" Desea seguir ingresando: "); scanf("%s",&resp[0]); } ordenar(&p); mostrar(p); } void ingresar(char *a) { printf("\n Ingrese el nombre del libro: "); scanf("%s",a); } void push(pila *p,char a[]) { pnodo nuevo; nuevo=(pnodo)malloc(sizeof(tiponodo)); strcpy((nuevo->libro),a); nuevo->siguiente=*p; *p=nuevo; } void ordenar(pila *p) { pnodo i,j; i=*p; j=*p; char c[100]; while(i!=NULL) { while(j!=NULL&&(j->siguiente)!=NULL) { if(strcmp(j->libro,(j->siguiente)->libro)>0) { strcpy(c,j->libro); strcpy(j->libro,(j->siguiente)->libro); strcpy((j->siguiente)->libro,c); } j=j->siguiente; } i=i->siguiente; j=i; } } void mostrar(pila p) { pnodo aux; aux=p; while(aux!=NULL) { printf("\n El libro es %s",aux->libro); aux=aux->siguiente; } }