lista siple error con char
Publicado por guillermo (6 intervenciones) el 06/05/2010 22:55:45
tengo problema, veran en el codigo este debe pedir el ingreso de nombre y rut de n cantidad de persona.
el problema que se genera es cuando imprime ya que. no me toma el nombre pero si el rut. siendo la unica diferencia el tipo de dato. si alguien me ayudara estaria muy agradecido.
#include <stdio.h>
#include <stdlib.h>
/*Estructura del nodo con campo nombre, rut*/
typedef struct nodo
{
char *nombre;
int rut;
struct nodo *next;
}lista;
/*funcion main*/
int main()
{
lista *l1, *l2, *l3;
char salir;
/*inicializo l1*/
l1 = (lista *)malloc(sizeof(lista));
l1 ->nombre ="p"; l1 ->rut=0; l1 ->next=NULL;
/*l1 queda como la cabecera, y l3 lo usamos como nodo para avanzar*/
l3 = l1;
/*ingresamos datos*/
do
{
/*pedimos memoria para el auxiliar*/
l2 = (lista *)malloc(sizeof(lista));
printf("Ingrese nombre: ");gets(l2 ->nombre);
printf("Ingrese rut: ");scanf("%d",&l2 ->rut);
l2 ->next = NULL;
l3 -> next = l2;/*aca el nodo apunta a la lista anterior*/
l3 = l3 -> next;/*aca el nodo avanza*/
printf("Desea salir? ");scanf("%s",&salir);
printf("\n");
}while(salir != 's');
/*igualamos con la intencion de recoorer la lista desde el comienzo*/
l3=l1;
/*imprimir*/
while( l3 != NULL )
{
printf("%c\t",l3->nombre);printf("%d",l3->rut);
l3=l3->next;/*se apunta si mimsmo para poner fin al recorrido*/
printf("\n");
}
return 0;
}
el problema que se genera es cuando imprime ya que. no me toma el nombre pero si el rut. siendo la unica diferencia el tipo de dato. si alguien me ayudara estaria muy agradecido.
#include <stdio.h>
#include <stdlib.h>
/*Estructura del nodo con campo nombre, rut*/
typedef struct nodo
{
char *nombre;
int rut;
struct nodo *next;
}lista;
/*funcion main*/
int main()
{
lista *l1, *l2, *l3;
char salir;
/*inicializo l1*/
l1 = (lista *)malloc(sizeof(lista));
l1 ->nombre ="p"; l1 ->rut=0; l1 ->next=NULL;
/*l1 queda como la cabecera, y l3 lo usamos como nodo para avanzar*/
l3 = l1;
/*ingresamos datos*/
do
{
/*pedimos memoria para el auxiliar*/
l2 = (lista *)malloc(sizeof(lista));
printf("Ingrese nombre: ");gets(l2 ->nombre);
printf("Ingrese rut: ");scanf("%d",&l2 ->rut);
l2 ->next = NULL;
l3 -> next = l2;/*aca el nodo apunta a la lista anterior*/
l3 = l3 -> next;/*aca el nodo avanza*/
printf("Desea salir? ");scanf("%s",&salir);
printf("\n");
}while(salir != 's');
/*igualamos con la intencion de recoorer la lista desde el comienzo*/
l3=l1;
/*imprimir*/
while( l3 != NULL )
{
printf("%c\t",l3->nombre);printf("%d",l3->rut);
l3=l3->next;/*se apunta si mimsmo para poner fin al recorrido*/
printf("\n");
}
return 0;
}
Valora esta pregunta


0