Título: Ayuda con archivos!!! Publicado por: theluigy13etv en 28 Junio 2011, 14:45 pm Tengo el programa hecho pero creo que hay algún error. El problema es el siguiente: Debo crear un archivo en el compilador Borland C++ 5.02. El archivo está compuesto por registros con los siguientes campos: codigo, apellidos, nombres y edad. El ingreso debe ser de tal manera que no se repitan los códigos ingresados...el código es el siguiente:
# include <stdio.h> # include <iostream.h> # include <conio.h> # include <stdlib.h> # define lon 80 struct trabajador { int codigo; char apellidos[lon+1]; char nombres[lon+1]; int edad; }; int main() { FILE *ftrabajador; struct trabajador f1; char resp='s'; int cod_al; do{ clrscr(); system("color 1e"); system("title CREACION DE ARCHIVO"); gotoxy(25,4); cout<<"INGRESO DE DATOS DEL ALUMNO"; gotoxy(25,5); cout<<"---------------------------"; ftrabajador=fopen("Empleados.txt","r"); if(NULL==ftrabajador) { gotoxy(5,6); textcolor(LIGHTRED); textbackground(LIGHTBLUE); cprintf("No existe ARCHIVO!...CREARE ARCHIVO"); getchar(); ftrabajador=fopen("Empleados.txt","a+"); } gotoxy(5,8); cout<<"Codigo: "; cin>>cod_al; fread(&f1,sizeof(f1),1,ftrabajador); while(!feof(ftrabajador)) { if(f1.codigo==cod_al) { gotoxy(5,9); textcolor(LIGHTRED); textbackground(LIGHTBLUE); cprintf("Alumno ya esta registrado!!!"); getchar(); fclose(ftrabajador); return 0; } fread(&f1,sizeof(f1),1,ftrabajador); } fclose(ftrabajador); ftrabajador=fopen("Empleados.txt","a+"); f1.codigo=cod_al; gotoxy(5,9); cout<<"Apellidos: "; gets(f1.apellidos); gotoxy(5,10); cout<<"Nombres: "; gets(f1.nombres); gotoxy(5,11); cout<<"Edad: "; cin>>f1.edad; fwrite(&f1,sizeof(f1),1,ftrabajador); // Al haberlo abierto en modo a+, permite escribir desde un inicio o continuando si ya habia anteriormente fclose(ftrabajador); gotoxy(5,13); cout<<"EMPLEADO REGISTRADO"; gotoxy(5,18); cout<<"Desea ingresar Nuevo Registro..? (S/N)==>"; cin>>resp; }while(resp=='s' || resp=='S'); return 0; } !!! EL problema es que me permite ingresar datos y deja que se repitan códigos y eso no debería pasar...espero sus comentarios...Muchas gracias :) |