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