Академический Документы
Профессиональный Документы
Культура Документы
h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
typedef struct {
char nombre[MAX_NOMBRE+1];
char apellidos[MAX_APELLIDO+1];
int edad;
char nif[MAX_NIF+1];
char marcaEsborrat;
} Persona;
int menu();
int alta();
int baja();
int consultarPersona();
int modificacion();
int consultasborradas();
int borrarfichero();
int compactarfichero();
int accesodirecto();
int numeroderegistros();
int informe();
void entrarPersona(Persona *perso);
void escribirPersona(Persona perso);
int main()
{
int n;
do {
n=menu();
switch(n){
case 1: alta();break;
case 2: baja();break;
case 3: consultarPersona();break;
case 4: modificacion();break;
case 5: consultasborradas();break;
case 6: borrarfichero();break;
case 7: compactarfichero();break;
case 8: accesodirecto();break;
case 9: numeroderegistros();break;
case 10: generarinforme();break;
}
}while(n!=0);
return 0;
}
int menu(){
int n;
fclose(f3);
printf("\n\noprime una tecla para continuar...");
getchar();
return 0;
}
f4 =fopen(NOMBRE_FICHERO,"rb+");
if ( f4 == NULL ) printf("error");
printf("\nIntroduccir el NIF: ");
scanf("%9[^\n]",nifTmp); while(getchar()!='\n');
do{
if((n=fread(&p4,sizeof(Persona),1,f4))!=1){ printf("error");return -1;}
if(!feof(f4)){
if(n==0){printf("\nBaja:Error de lectura"); return -2;}
if(p4.marcaEsborrat!=MARCA_ESBORRAT && strcmp(p4.nif,nifTmp)==0){
printf("\nLos datos actuales són: \n");
escribirPersona(p4);
printf("\nIntroduce los nuevos datos: \n");
entrarPersona(&p4);
n=fwrite(&p4,sizeof(Persona),1,f4);
if(n!=1){
printf("\nBaja: Error de escritura");
}
}
}
}while(!feof(f4));
return 0;
}
{
Persona p5;
FILE *f5;
int n;
f5= fopen(NOMBRE_FICHERO,"rb");
if( f5 == NULL ) {
printf("Error al abrir el fichero");
return -1;
}
do{
n = fread(&p5,sizeof(Persona), 1,f5);
if(!feof(f5)){
if(n==0) {
printf("Error de lectura");
}
escribirPersona(p5);
}
}while(!feof(f5));
fclose(f5);
printf("\n\nOprime una tecla para continuar...");
getchar();
return 0;
}
}
int borrarfichero(){ /// 6
char borrar;
do{
printf("\nDesea borrar el fichero (s/n): ");
scanf("%c",&borrar); while(getchar()!='\n');
}while(borrar!='s' && borrar!='n');
if(borrar=='s') unlink("personas.dat");
return 0;
}
Persona p7;
FILE *f1;
FILE *f2;
int n;
f1= fopen(NOMBRE_FICHERO,"rb");
if(f1==NULL) {
printf("Error al abrir el fichero");
return -1;
}
f2= fopen("personas.new","wb");
if(f2==NULL) {
printf("Error al abrir el fichero");
return -1;
}
do{
n = fread(&p7,sizeof(Persona), 1,f1);
if(!feof(f1)){
if(n==0) {
printf("Error de lectura");
return -2;
}
if(p7.marcaEsborrat!='*'){
n = fwrite(&p7,sizeof(Persona), 1,f2);
}
}
}while(!feof(f1));
fclose(f1);
fclose(f2);
unlink("personas.dat");
if(rename("tmp.dar","personas.dat")==-1){
printf("error de rencontrada");
}
printf("\n\noprime una tecla para continuar...");
getchar();
return 0;
}
Persona p8;
FILE *f8;
int n;
int posicion=0;
int registros=0;
///abrir
f8= fopen(NOMBRE_FICHERO,"rb");
if(f8==NULL) {
printf("Error al abrir el fichero");
return -1;
}
printf("buscar el registro: ");
scanf("%d",&posicion);
while(posicion<=0 || posicion>registros);
n = posicion-1;
fseek(f8, (long) (n*sizeof(Persona)),SEEK_SET);
///leer
n = fread(&p8,sizeof(Persona), 1, f8);
if(!feof(f8)){
if(n==0){
printf("Error de lectura");
}
///imprimir
escribirPersona(p8);
getchar();
}
///cerrar f
fclose(f8);
return 0;
}
FILE *f9;
*nRegistros=0;
f9 = fopen("personas.dat","rb");
if(f9==NULL) {
printf("error al abrir el fichero");
return -1;
}
getchar();
return 0;
}
Persona p10;
FILE *f10;
int n;