Título: ayuda para eliminar un dato de una agenda, en c Publicado por: alexander-pedro en 11 Julio 2013, 19:19 pm pasa que estoy creando una agenda en c,
y necesito eliminar una dato, ingresando el nombre de algun contacto. como le hago? hasta esto momentos llevo esto: #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> struct agenda{ char nombre[200]; char telefono[12]; char cedula[20]; struct agenda*sig; }*princ, *fin; int j=0; void agregar(){ struct agenda*nuevo; nuevo=(struct agenda*)malloc(sizeof(struct agenda)); printf("\ndigite su nombre: "); fflush(stdin); scanf("%s", nuevo->nombre); fflush(stdin); printf("digite su telefono: "); scanf("%s", nuevo->telefono); printf("digite su cc: "); fflush(stdin); scanf("%s", nuevo->cedula); nuevo->sig=NULL; if(princ==NULL){ princ=nuevo; fin=nuevo; } else{ fin->sig=nuevo; fin=nuevo; } j++; } void imprimir(){ printf("\nDATOS AGREGADOS HASTA EL MOMENTO\n"); struct agenda*aux; aux=princ; if(aux==NULL){ printf("agenda vacia vacia"); } else{ while(aux!=NULL){ printf("\nnombre: %s", aux->nombre); printf("\ntelefono: %s",aux->telefono); printf("\ncedula: %s", aux->cedula); printf("\n--------------------------------------------\n"); aux=aux->sig; } } } void eliminar(){ struct agenda*aux; struct agenda*aux1; int cont; aux=princ; aux=princ; cont=0; printf("digite el nombre a eliminar"); while(aux!=NULL){ if(aux->nombre==aux1->nombre){ if(cont==0){ princ=princ->sig; } } aux=aux->sig; aux1=aux; cont=1; } } int main(){ int opc; do{ printf("\n1. ingresar datos a la agenda\n"); printf("2. mostrar los datos de la agenda\n"); printf("3. eliminar datos de la agenda\n"); printf("4. eliminar\n"); printf("\nintroduce una opcion: "); scanf("%d", &opc); system("cls"); switch(opc){ case 1: agregar(); break; case 2: imprimir(); break; case 3: eliminar(); break; case 4: printf("salir"); break; } }while(opc<4); } Título: Re: ayuda para eliminar un dato de una agenda, en c Publicado por: Stakewinner00 en 11 Julio 2013, 22:26 pm y si escribes los datos en un archivo y luego lo eliminas del archivo?
Título: Re: ayuda para eliminar un dato de una agenda, en c Publicado por: eferion en 12 Julio 2013, 09:41 am A ver, con la estructura agenda vas a tener una lista enlazada, si lo representamos gráficamente, después de tener varios contactos la estructura sería la siguiente:
agenda ( sig -> ) agenda ( sig -> ) agenda ... Si lo representamos con números para poder explicarlo mejor quedaría así: agenda0 ( sig -> ) agenda1 ( sig -> ) agenda2 ... Esto básicamente quiere decir que tienes un elemento agenda0 cuyo puntero sig apunta al elemento agenda1 y así. Si quieres eliminar agenda1 tendrías que conseguir que el sig de agenda0 apunte a agenda2 en vez de a agenda1. Y después, como buena práctica, hay que eliminar agenda1 para que no deje lagunas de memoria. Los pasos serían más o menos estos: Código
Título: Re: ayuda para eliminar un dato de una agenda, en c Publicado por: aguml en 15 Julio 2013, 11:43 am En tu codigo veo un fallo:
if(aux->nombre==aux1->nombre){ No puedes comparar dos arrays de caracteres asi, tienes que usar strcmp o strncmp. Título: Re: ayuda para eliminar un dato de una agenda, en c Publicado por: mr.blood en 15 Julio 2013, 12:24 pm Código
Que demonios es eso? No pides el nombre a eliminar, comparas cadenas con ==... Sa1uDoS Título: Re: ayuda para eliminar un dato de una agenda, en c Publicado por: aguml en 16 Julio 2013, 11:00 am verdad, tampoco pides el nombre.
|