Ya solucione el problema no era eso que me decias, el problema estaba en que la varibel resp estaba declarada como un vector de tamaño 1
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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
#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;
}
}