![]() |
ayuda en c (ver 4.9.5.0) hola, lo que pasa es que el programa vuelve al principal y reinicializa el array de estructura, y no encuentro la forma de evitarlo. garcias y salu2 :adios: #include <stdio.h> #include <conio.c> #define mx 10 struct{ char nombre[100], calle[100], ciudad[100]; char codigop[100], provincia[100]; }correos[mx]; int opcion=0; void inic_lista(), intro(), borrar(), listar(); int menu(), busca_libre(); /* Funcion Principal*/ int main() { char opcion; inic_lista(); opcion=menu(); do{ switch(opcion){ case '1': intro(); break; case '2': borrar(); break; case '3': listar(); break; case '4': break;} }while(opcion!=4); } /*Funcion inic_lista*/ void inic_lista() { register int t; for(t=0;t<mx;t++) correos[t].nombre[t]='\0'; } /*Funcion Menu*/ int menu() { char opc; do{ system("cls"); gotoxy(10,3); printf("Programa que carga una base de datos de correos."); gotoxy(25,8); printf("1- Introducir un nombre."); gotoxy(25,9); printf("2- Borrar un nombre."); gotoxy(25,10); printf("3- Listar el archivo."); gotoxy(25,11); printf("4- Salir."); gotoxy(25,14); printf("Elegir una opcion (1-4): "); scanf("%c", &opc); }while(opc<1 || opc>4); return(opc); } /*Funcion intro*/ void intro() { int sitio; register int i; sitio=busca_libre(); if(sitio==-1){ gotoxy(25,20); printf("La lista esta llena."); getch(); return;} else{ for(i=sitio;i<sitio+1;i++){ system("cls"); fflush(stdin); printf("\nNombre: "); gets(correos[i].nombre); printf("\nCalle: "); gets(correos[i].calle); printf("\nCiudad: "); gets(correos[i].ciudad); printf("\nProvincia: "); gets(correos[i].provincia); printf("\nCodigo Postal: "); gets(correos[i].codigop);} menu(); } } /*Funcion busca_libre*/ int busca_libre() { register int t; for(t=0;correos[t].nombre[0]&&t<mx;t++); if(t==mx) return(-1); else return(t); } /*Funcion borrar*/ void borrar() { register int i; char nomb[100], sw='n'; printf("Elegir el nombre a borrar: "); gets(nomb); i=0; do{ fflush(stdin); if (nomb==correos[i].nombre) sw='s'; i++; }while ((i<mx)||(sw=='n')); if(sw=='n') printf("El nombre no existe."); else{ correos[i].nombre[0]='\0'; gotoxy(17,15); printf("El nombre ha sido borrado con exito"); gotoxy(15,17); system("pause");} } /*Funcion listar*/ void listar() { int i; for(i=0;i<mx;i++){ system("cls"); fflush(stdin); printf("\nNombre: %c ", correos[i].nombre); printf("\nCalle: %c ", correos[i].calle); printf("\nCiudad: %c ", correos[i].ciudad); printf("\nProvincia: %c ", correos[i].provincia); printf("\nCodigo Postal: %c ", correos[i].codigop); getch();} } |
hola, ya esta solucionado, era esto ; inic_lista(); opcion=menu(); <------------- estaba fuera del do-while do{ switch(opcion){ case '1': intro(); break; case '2': borrar(); break; case '3': listar(); break; case '4': break;} }while(opcion!=4); } salu2 :adios: |
| La zona horaria es GMT -6. Ahora son las 06:43. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.