Código
#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; typedef char tcad[50]; typedef struct talumno{ int libreta; tcad nombre; tcad carrera; }; typedef FILE *parchivo; void carga(talumno &a); void cargar_alumnos(parchivo alumnos); void mostrar(parchivo alumnos); void borrar(parchivo alumnos, int buscado); bool consulta(parchivo alumnos, int codigo); main() { int codigoBuscado; parchivo estudiantes; cargar_alumnos(estudiantes); mostrar(estudiantes); cout<<"Buscar alumno, ingrese LU: ";cin>>codigoBuscado; borrar(estudiantes,codigoBuscado); system("pause"); } void carga(talumno &a) { fflush(stdin); cout<<"Ingrese LU: ";cin>>a.libreta; fflush(stdin); cout<<"Ingrese nombre: ";gets(a.nombre); fflush(stdin); cout<<"Ingrese carrera: ";gets(a.carrera); fflush(stdin); } void cargar_alumnos(parchivo alumnos) { talumno a; int cantidad; alumnos=fopen("alumnos.txt","wb");//Modo escritura, se pierde el contenido, si no existe el archivo lo crea cout<<"Cuantos registros desea guardar?: ";cin>>cantidad; while(cantidad>0){ carga(a); if(consulta(alumnos,a.libreta)==false){ fwrite(&a,sizeof(a),1,alumnos); cantidad--; } else{ cout<<"YA EXISTE UN USUARIO CON LA MISMA LIBRETA"<<endl; } } fclose(alumnos); } void mostrar(parchivo alumnos) { talumno a; alumnos=fopen("alumnos.txt","rb");//Apertura solo modo escritura if(alumnos==NULL){ cout<<"Archivo inexistente"<<endl; } else{ while(!feof(alumnos)){ fread(&a,sizeof(a),1,alumnos); if(!feof(alumnos)){ cout<<a.libreta<<endl; cout<<a.nombre<<endl; cout<<a.carrera<<endl; } } } fclose(alumnos); } void borrar(parchivo alumnos, int buscado)//Copia todos los alumnos excepto uno en especifico y lo guarda en otro archivo temporal { talumno a; parchivo aux; alumnos=fopen("alumnos.txt","rb"); aux=fopen("temporal.txt","wb"); if(alumnos!=NULL){ while(!feof(alumnos)){ fread(&a,sizeof(a),1,alumnos); if(a.libreta!=buscado && !feof(alumnos)){ fwrite(&a,sizeof(a),1,aux); } } fclose(aux); fclose(alumnos); } if(remove("alumnos.txt")==0){//Desde aqui borra el archivo original y renombra el archivo temporal a "alumnos.txt" cout<<"ELIMINADO EXITOSAMENTE"<<endl; if(rename("temporal.txt","alumnos.txt")==0){ cout<<"RENOMBRADO EXITOSAMENTE"<<endl; } else{ cout<<"ERROR AL RENOMBRAR"<<endl; } } else{ cout<<"ERROR AL ELIMINAR"<<endl; } } bool consulta(parchivo alumnos, int codigo) { talumno a; bool existe=false; alumnos=fopen("alumnos.txt","rb"); if(alumnos!=NULL){ while(!feof(alumnos) && existe==false){ fread(&a,sizeof(a),1,alumnos); if(a.libreta==codigo){ existe=true; } } } fclose(alumnos); return existe; }