Buenas gente, estoy haciendo un programa muy simple para hacer altas bajas y modificaciones en un archivo en c usando registros. Mi problema es que no me funciona la parte en que tendria que dar de baja y la de modificar, les dejo mi programa y espero me puedan ayudar. Desde ya muchas gracias!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void darbaja();
typedef struct{
int dni;
char nombre[30];
char apellido[30];
}Empleados;
int main()
{
int opcion=0;
while(opcion
<5){ printf("1_dar de alta\n"); switch (opcion)
{
case 1:daralta();break;
case 2:darbaja();break;
case 3:modificar();break;
case 4:imprimir();break;
}
}
return 0;
}
void daralta()
{
char nombre[30];
FILE* miarchivo=NULL;
Empleados e;
miarchivo
=fopen("Empleados.txt","a+"); if(miarchivo==NULL)return;
printf("Ingrese DNi del empleado\n"); printf("Ingrese nombre del empleado\n"); printf("Ingrese apellido del empleado\n"); fseek(miarchivo
,0L,SEEK_END
); fwrite(&e
,sizeof(Empleados
),1,miarchivo
);
}
void imprimir()
{
FILE* miarchivo=NULL;
Empleados e;
miarchivo
=fopen("Empleados.txt","r"); fread(&e
,sizeof(Empleados
),1,miarchivo
); if(miarchivo==NULL)return ;
while(feof(miarchivo
)==0) {
printf("DNI:%d Nombre:%s Apellido:%s\n",e.
dni,e.
nombre,e.
apellido); fread(&e
,sizeof(Empleados
),1,miarchivo
); }
}
void darbaja()
{
FILE* miarchivo=NULL;
FILE* miarchivouxiliar=NULL;
int dniaux;
Empleados e;
miarchivo
=fopen("Empleados.txt","a+"); miarchivo
=fopen("Empleadosaux.txt","a+"); printf("Ingrese el dni del empleado\n");
fread(&e
,sizeof(Empleados
),1,miarchivo
); printf("dniaux:%i|dni:%i\n",dniaux
,e.
dni); {
if(e.dni!=dniaux)
{
fseek(miarchivouxiliar
,0l,SEEK_END
); fwrite(&e
,sizeof(Empleados
),1,miarchivouxiliar
); }
fread(&e
,sizeof(Empleados
),1,miarchivo
); printf("dniaux:%d|dni:%d\n",dniaux
,e.
dni); }
rename("Empleadosaux.txt","Empleados.txt"); }
void modificar()
{
int dniaux;
FILE* miarchivo=NULL;
FILE* miarchivouxiliar=NULL;
Empleados e;
miarchivo
=fopen("Empleados.txt","a+"); miarchivo
=fopen("Empleadosaux.txt","a+"); printf("Ingrese el dni del guachin\n"); fread(&e
,sizeof(Empleados
),1,miarchivo
); printf("dniaux:%d|dni:%d\n",dniaux
,e.
dni); while(feof(miarchivo
)==0) {
if(e.dni!=dniaux)
{
fseek(miarchivouxiliar
,0l,SEEK_END
); fwrite(&e
,sizeof(Empleados
),1,miarchivouxiliar
); }
else
{
printf("Ingrese DNi del empleado\n"); printf("Ingrese nombre del empleado\n"); printf("Ingrese apellido del empleado\n"); fseek(miarchivouxiliar
,0l,SEEK_END
); fwrite(&e
,sizeof(Empleados
),1,miarchivo
); }
fread(&e
,sizeof(Empleados
),1,miarchivo
); }
rename("Empleadosaux.txt","Empleados.txt"); }
MOD: Etiquetas de Código GeSHi insertadas