Buon giorno, questo codice ci da un 'errore di segmentation fault
evidentemente il problema è su i puntatori sulla struttura
come possiamo risolvere tale problema?
codice:
#include<stdio.h>
typedef struct {
char nome[20];
char numero[20];
} contatto;
char name[20];
int EsisteFile( char nomeFile[] ) {
FILE *fp;
fp=fopen("lista.dat","rb");
if (fp == NULL){
return 0;
} else {
fclose(fp);
return 1;
}
}
void Inserimento ( char nomeFile[], char name[20] ){
FILE *fi, *fe;
contatto p, pt;
int fine=0;
int EsisteFile( char nomeFile[] );
if (!EsisteFile( nomeFile)){
fi=fopen("lista.dat","wb");
fwrite(&pt,sizeof(contatto),1,fi);
fclose(fi);
} else {
fi=fopen("lista.dat","rb");
fe=fopen("temporaneo.dat","wb");
while (fread(&p,sizeof(contatto),1,fi)){
if (strcmp(p.nome,name)<0) {
fwrite(&p,sizeof(contatto),1,fe);
} else {
fwrite(&pt,sizeof(contatto),1,fe);
break;
}
}
while (!EOF){
fread(&p,sizeof(contatto),1,fi);
fwrite(&p,sizeof(contatto),1,fe);
}
}
fclose(fi);
fclose(fe);
remove(nomeFile);
rename("temporaneo.dat", nomeFile);
}
int main () {
char nomefi[] = "lista.dat";
char casa[20];
EsisteFile (nomefi);
printf("Nome?");
scanf("%s", casa);
Inserimento ( nomefi, casa );
}