Hai ragione, scusami. Ecco tutto il codice completo...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Procedura anagrafica*/
#define DIM 100
struct persona{
char nome[DIM];
char cognome[DIM];
char indirizzo[DIM];
int eta;
};
struct persona anag;
FILE *fp;
void vis_per(void);
void immissione(void);
void ricerca(void);
void cancellazione(void);
void visualizzazione(void);
int main(){
int tasto;
do{
system("cls");
printf("--->\t\tMENU'\t\t<---");
printf("\nPROCEDURA ANAGRAFICA:\n");
printf("1. Immissione Persona\n");
printf("2. Ricerca Persona\n");
printf("3. Cancellazione persona\n");
printf("4. Visualizza Anagrafe\n");
printf("5. Fine\n");
printf("Inserisci la tua scelta: ");
scanf("%d", &tasto);
fflush(stdin);
system("cls");
switch(tasto){
case 1:
immissione();
printf("Scrittura eseguita con successo. Verifica guardando nel file...\n\n");
break;
case 2:
ricerca();
break;
case 3:
cancellazione();
break;
case 4:
visualizzazione();
break;
case 5:
printf("\nArrivederci...\n");
break;
default:
printf("Tasto inesistente...\nRIPROVA...\n\n");
break;
}
if(tasto!=5){
system("pause");
}
fflush(stdin);
}while(tasto!=5);
return 0;
}
void immissione(void){
fp=fopen("Anagrafe.txt", "a+");
if(fp==NULL){
perror("Errore in apertura da file!\n");
exit(1);
}
printf("Inserimento persona:\n");
printf("Nome: ");
gets(anag.nome);
printf("Cogome: ");
gets(anag.cognome);
printf("Indirizzo: ");
gets(anag.indirizzo);
printf("Eta': ");
scanf("%d", &anag.eta);
fprintf(fp, "%s\n", anag.nome);
fprintf(fp, "%s\n", anag.cognome);
fprintf(fp, "%s\n", anag.indirizzo);
fprintf(fp, "%d\n\n", anag.eta);
fclose(fp);
}
void ricerca(void){
char nome[DIM], cognome[DIM];
int eta;
int n, fine;
printf("Ricerca persona:\n");
printf("Inserisci Nome: ");
gets(nome);
printf("Inserisci Cognome: ");
gets(cognome);
printf("Inserisci Eta': ");
scanf("%d", &eta);
fp=fopen("Anagrafe.txt", "r");
if(fp==NULL){
perror("Errore in apertura da file!\n");
exit(1);
}
do{
n=fread(&anag, sizeof(struct persona), 1, fp);
if(n==0)
fine=1;
else{
if(strcmp(nome,anag.nome)==0)
if(strcmp(cognome,anag.cognome)==0)
if(eta==anag.eta){
printf("La persone cercata e' presente nell'anagrafe.\n");
}
else{
printf("La persone cercata non e' presente nell'anagrafe...\n\n");
}
}
}while(n!=0);
}
void cancellazione(void){
char nome[DIM], cognome[DIM];
int eta;
char pausa;
int n, fine;
FILE *fp;
printf("Cerca persona da elminare:\n");
printf("Inserisci Nome: ");
gets(nome);
printf("Inserisci Cognome: ");
gets(cognome);
printf("Inserisci Eta': ");
scanf("%d", &eta);
fp=fopen("Anagrafe.txt", "r+");
if(fp==NULL){
perror("Errore in apertura da file!\n");
exit(1);
}
do{
n=fread(&anag, sizeof(struct persona), 1, fp);
if(n==0)
fine=1;
if(strcmp(nome,anag.nome)==0)
if(strcmp(cognome,anag.cognome)==0)
if(eta==anag.eta){
printf("La persone cercata e' presente nell'anagrafe.\n");
printf("Vuoi elimiare davvero questa persona?\n");
printf("Digitia S/N: ");
scanf("%c", &pausa);
if(pausa=='s' || pausa=='S'){
strcmp(anag.nome, "");
strcmp(anag.cognome, "");
strcmp(anag.indirizzo, "");
anag.eta = 0;
fwrite(&anag, sizeof(struct persona), 1, fp);
fclose(fp);
}
}
else{
printf("La persone cercata non e' presente nell'anagrafe...\n\n");
}
}while(n!=0);
}
void vis_per(void){
printf("Visualizzazione:\n");
printf("///////////////////////////////\n");
printf("%s", anag.nome);
printf("%s", anag.cognome);
printf("%s", anag.indirizzo);
printf("%d", anag.eta);
printf("\n///////////////////////////////\n\n");
}
void visualizzazione(void){
FILE *fp;
int n, fine;
fp=fopen("Anagrafe.txt", "r");
if(fp==NULL){
perror("Errore in apertura da file!\n");
exit(1);
}
do{
n=fread(&anag, sizeof(struct persona), 1, fp);
if(n==0)
fine=1;
vis_per();
}while(n!=0);
fclose(fp);
}