Programación General => C/C++ => Mensaje iniciado por: pablo_ivan57 en Miércoles 13 de Febrero de 2008, 18:20
Título: Errores En Programa Con Archivos
Publicado por: pablo_ivan57 en Miércoles 13 de Febrero de 2008, 18:20
Hola bueno pongo todo el programa: #include "stdio.h" #include "conio.h" #include "string.h" typedef struct { char nombre[50]; char capital[50]; }paises; int i=0,indicador=1; paises nombres[100],pais; char buff[30]; void ingresardatos(paises *nombres); void mostrardatos(void); void modificardatos(paises *nombre); void escribirdatos(paises *nombre); char menu(void); main() { while(indicador){ switch(menu()){ case 'A': ingresardatos(nombres); break; case 'B': mostrardatos(); break; case 'C': modificardatos(nombres); break; case 'D': return 0; indicador=0; break; } } } void ingresardatos(paises *nombres) { FILE *pt; if((pt=fopen("DATOS","rb+"))==NULL) { printf("Error al leer archivo de datos\n"); return; } printf("Ingrese los datos:<<ENTER>> en el campo pais para terminar\n"); printf("Ingrese el país: "); while(*gets(nombres.nombre)) { printf("Ingrese su capital:"); gets(nombres.capital); i++; printf("Ingrese el país: "); } fwrite(nombres,sizeof(paises),i,pt); rewind(pt); } void mostrardatos(void) { FILE *pt; if((pt=fopen("DATOS","rb+"))==NULL) { printf("Error al leer archivo de datos\n"); return; } fread(&pais,sizeof(paises),1,pt); while(!feof(pt)) { printf("%-30s%-30s\n",pais.nombre,pais.capital); fread(&pais,sizeof(paises),1,pt); } fclose(pt); } void modificardatos(paises *nombre) { FILE *pt;
int j; if((pt=fopen("DATOS","rb+"))==NULL) { printf("Error al leer archivo de datos\n"); return; } rewind(pt); printf("Ingrese el nombre del pais a modificar\n"); for(j=0;;j++) { gets(buff); fread(&pais,sizeof(paises),1,pt); if(strcmp(pais.nombre,buff)==0); { printf("Ingrese el nuevo nombre: "); gets(nombres[j].nombre); printf("Ingrese la nueva capital: "); gets(nombres[j].capital); escribirdatos(nombres); break; } } } void escribirdatos(paises *nombre) { FILE *pt;
if((pt=fopen("DATOS","rb+"))==NULL) { printf("Error al leer archivo de datos\n"); return; } fwrite(nombres,sizeof(paises),i,pt); rewind(pt); } char menu(void) { char c; printf("Ingrese la opcion que desea realizar\n"); printf("A) Ingresar Paises\n"); printf("B) Listar Paises\n"); printf("C) Modificar paises\n"); printf("D) Salir\n"); scanf("%c",&c); while(getchar()!='\n'); return c; }
Es un programa para guardar datos de paises y sus capitales, y poderlos modificar despúes guardandolo en un archivo.
Los problemas son varios, primero que cuando mando a escribir datos en el archivo se mantiene basura, de archvios anteriores, es decir no sobrescribe la estructura, con los datos nuevos que ingrese. Luego otro problema es que al hacer modificaciones void escribirdatos(), no lo hace, no entiendo porque. Si es que me pueden ayudar estaria muy agradecido. Saludos.
Título: Re: Errores En Programa Con Archivos
Publicado por: patitofeo en Lunes 18 de Febrero de 2008, 19:21