C/Visual C - Ficheros

 
Vista:

Ficheros

Publicado por rocio (8 intervenciones) el 26/01/2005 16:45:01
Hola!!
Tengo las sg estructuras:
struct fecha
{
int dia,mes,anio;
};
struct empleado
{
char cEstado; //para saber si se han eliminado a=activo b=borrado
int iNumEmpleado;
char cNombre[30];
struct fecha fecha_nacimiento;
float fSalario;
char cTurno;
};
Tengo un fichero empleados donde he introducido varios datos. Lo que necesito ahora es modificar el campo cEstado de un registro que pase a valer 'b'.
¿Me pueden decir como puedo modificar un campo del registro?.
Graciasssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 11
Ha aumentado su posición en 5 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

RE:Ficheros

Publicado por zzzz (318 intervenciones) el 27/01/2005 02:20:42
Hi! esta es mi idea y espero que te sirva, puedes abrir el archivo de lectura y escritura con fopen o , y luego con fseek mueves el apuntador del archivo al inicio y luego te sigues moviendo hasta encontrar el registro que quieres modificar y luego guardas nuevamente el registro con el cambio que le quieres hacer aunque no me acuerdo bien si era asi, sera cuestion que lo pruebes y si no funciona pues ya no se como.
con codigo mas o menos seria asi
empleado aux;
en tu ejemplo seria mas o menos asi primero lo mueves al inicio
fseek ("C:/empleados", SEEK_SET, 0);
// seek_set es para que sea al inicio
abres el archivo

if ((Arch=fopen("a:/empleados","r"))==NULL)
{
printf ("Error.\n");
return;
}
//lees el primer registro
fread(&aux,sizeof(aux),1,arch);
//con un ciclo checas que no sea el fin de archivo y que busques el campo a modificar

while (!feof && aux.iNumEmpleado!=iNumEmpeladoabuscar)
{
fread(&aux,sizeof(aux),1,arch);
}
aux.cEstado='b';
fwrite (&aux,sizeof(aux),1,Arch);

fclose (Arch);
espero que te sirva de algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar