Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Rodri en 6 Octubre 2011, 17:39 pm



Título: Estructuras.....
Publicado por: Rodri en 6 Octubre 2011, 17:39 pm
Hola a todos! Estoy intentado realizar una estructura pero encuentro los siguientes problemas:

-Hay veces que el Scanf de los nombres me salta el escaneo de los mismos.

-Al recorrer e ipmrimir la lista solo me muestra el ultimo cuando deseo recorrer toda la lista.

Código:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
typedef struct dato{
  char nombre[50];
  struct dato *sig;
  struct dato *ant;
}LISTA;

int main(void)
{
  int cont;
  int cont2=0;
 
  LISTA *inicio,*aux,*nodo;
  inicio=NULL;
  nodo=malloc(sizeof(LISTA));
  if(nodo==NULL)
    {
      printf("No hay memoria");
      exit(1);
    }//if
  printf("Dame un numero de nombres: ");
  scanf("%d", &cont);
  while(cont2!=cont)
    {
      printf("Dame un nombre: \n");
      scanf("%s",nodo->nombre);
      printf("%d\n",cont2);
      if(inicio==NULL)
{
  inicio=nodo;
  inicio->sig==NULL;
  inicio->ant=NULL;
  aux=inicio;
}
      cont2++;
    }
 
  //Recorremos lista
 
  aux=inicio;
  while(aux!=NULL)
    {
      printf("%s\n",aux->nombre);
      aux=aux->sig;
    }//while
}

Gracias por apoyarme!!!

Espero tengan un bonito día!

www.soundcloud.com/talking-trees


Título: Re: Estructuras.....
Publicado por: satu en 6 Octubre 2011, 19:46 pm
Hola

Eso pasa porque el buffer de entrada no está limpio, prueba poniendo detrás de cada scanf esto (con el ; ):
Código
  1. while(getchar()!='\n') ;

Además tienes otro error aquí:
Código
  1. if(inicio==NULL)
  2. {
  3.  inicio=nodo;
  4.  inicio->sig==NULL;
  5.  inicio->ant=NULL;
  6.  aux=inicio;
  7. }
Adivina donde hay un = de sobra

Saludos