Código
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct consulta{ float peso; char serialvacuna[25]; char tipovacuna[25]; char diagnostico[250]; char observaciones[250]; char fecha[10]; struct consulta *sig; }NODOCONSULTA; typedef struct mascota{ char nombre[20]; char animal[20]; char nacimiento[10]; char sexo[10]; char raza[20];//Solo si es perro o gato char color[20];//Solo si es perro o gato NODOCONSULTA *historialmedico; struct mascota *sig; }NODOMASCOTA; typedef struct cliente{ char nombre[50]; char direccion[100]; double cedula; char telefono[15]; NODOMASCOTA *listamascotas; struct cliente *sig; }NODOCLIENTE; NODOMASCOTA* crearNodoMascota(){ NODOMASCOTA *nuevo; if(nuevo){ nuevo->sig=NULL; } return nuevo; } NODOCONSULTA* crearNodoConsulta(){ NODOCONSULTA *nuevo; if(nuevo){ nuevo->peso=0; nuevo->sig=NULL; } return nuevo; } NODOCLIENTE* crearNodoCliente(){ NODOCLIENTE *nuevo; if(nuevo){ nuevo->cedula=0; nuevo->sig=NULL; } return nuevo; } NODOCLIENTE* IniciarLista(){ NODOCLIENTE *nuevo; nuevo=crearNodoCliente(); nuevo->listamascotas=crearNodoMascota(); nuevo->listamascotas->historialmedico=crearNodoConsulta(); return nuevo; } void addcliente(NODOCLIENTE **ListaClientes){ NODOCLIENTE* Nuevo=crearNodoCliente(); NODOCLIENTE* aux=(*ListaClientes); while(aux->sig!=NULL){ aux=aux->sig; } Nuevo->sig=NULL; aux->sig=Nuevo; } void mostrarclientes (NODOCLIENTE *Clientes){ NODOCLIENTE *aux; aux=crearNodoCliente(); *aux=*Clientes; do{ aux=aux->sig; }while(aux->sig!=NULL); } void addmascota(NODOCLIENTE **ListaClientes){ NODOCLIENTE *busqueda; busqueda=crearNodoCliente(); *busqueda=**ListaClientes; mostrarclientes(busqueda); int encontrado=0; //Bandera que indica si se encontro el usuario double cedauxiliar=0; //Cedule que ingrese el usuario para buscar while(busqueda!=NULL){ if(cedauxiliar==busqueda->cedula){ encontrado=1; break; } busqueda=busqueda->sig; } if(encontrado==1){ NODOMASCOTA *aux; //En esta linea me da un error aux=busqueda->listamascotas; if(aux=NULL){ aux=crearNodoMascota(); } NODOMASCOTA* Nuevo=crearNodoMascota(); while(aux->sig){ aux=aux->sig; } aux->historialmedico=crearNodoConsulta(); Nuevo->sig=NULL; aux->sig=Nuevo; }else{ } } int main(){ NODOCLIENTE *ListaClients; ListaClients=IniciarLista(); addcliente(&ListaClients); addcliente(&ListaClients); addmascota(&ListaClients); return 1; }
En mi funcion addmascota, el programa se me cierra cuando se logra encontrar la cedula del dueño de la mascota.