Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLN 80
#define MAXCN 32
#define MAXCONTACT 20
#define MAXNM 20
typedef struct persona
{
char nome[MAXNM];
char cognome[MAXCN];
char indirizzo[MAXLN];
int telefono;
char nota[MAXLN];
}persona;
int main()
{
int c=0;
FILE *fp;
char str1[]="database.dat", cogntemp[MAXCN], nomtemp[MAXNM];
persona p;
printf("**********************\n");
printf("********AGENDA********\n");
printf("**********************\n");
if((fp=fopen(str1,"r+w"))==NULL)
{
printf("Errore apertura database");
return EXIT_FAILURE;
}
while(c!=5)
{
printf("1:Visualizza Records\n");
printf("2:Aggiungi Record\n");
printf("3:Cancella Record\n");
printf("4:Cerca Record\n");
printf("5:Esci dal programma\n");
scanf("%d",&c);
if(c>5 || c<=0)
{
printf("Valore non valido");
return EXIT_SUCCESS;
}
switch(c)
{
case 1:
while(!feof)
{
fscanf(fp, "%s %s %s %d %s", &p.nome, &p.cognome, &p.indirizzo, &p.telefono, &p.nota);
printf("%s %s", p.cognome, p.nome);
rewind(fp);
break;
};
case 2:
{
printf("Nome:");
scanf("%s", &p.nome);
printf("Cognome:");
scanf("%s", &p.cognome);
printf("Indirizzo:");
scanf("%s", &p.indirizzo);
printf("Numero telefono:");
scanf("%d", &p.telefono);
printf("Note:");
scanf("%s", &p.nota);
fprintf(fp, "%s %s %s %d %s", p.nome, p.cognome, p.indirizzo, p.telefono, p.nota);
rewind(fp);
break;
};
case 3:
{
printf("Cognome:");
scanf("%s", &cogntemp);
printf("Nome:");
scanf("%s", &nomtemp);
while(!feof && (p.cognome != cogntemp && p.nome != nomtemp))
fscanf(fp, "%s %s %s %d %s", &p.nome, &p.cognome, &p.indirizzo, &p.telefono, &p.nota);
rewind(fp);
break;
};
case 4:
{
printf("Cognome:");
scanf("%s", &cogntemp);
while(!feof)
{
fscanf(fp, "%s %s %s %d %s", &p.nome, &p.cognome, &p.indirizzo, &p.telefono, &p.nota);
if(strcmp(cogntemp, p.cognome)==0)
printf("%s %s %s %d %s", p.cognome, p.nome);
}
rewind(fp);
break;
};
};
}
}
ora mi da problema solo il case 3, dove devo eliminare un record dal database
