Perchè uno stesso codice che su Windows funziona su linux va in segmentation fault
causata ogni volta che vado a mettere le mani su un file
il programma ne gestisce 3/4, eppure su uno di questi,con le stesse istruzioni che sugli altri vanno tranquille , crasha.
la cosa incredibile è che ho provato a aprilo e chiuderlo solamente...guardate questo pezzo di codice
main()
{
int scelta(void);
void predisponifile(FILE *);
void aggiornaregistro(FILE *,int);
void login(FILE *);
void registrati(FILE *);
void logadmin(FILE *);
FILE *registro;
FILE *maindb;
FILE *gestiscielenco;
int start,volte;
registro = fopen("registro.txt","r+");
maindb = fopen("maindb.txt","r+");
gestiscielenco= fopen("gestiscielenco.txt","r+");
fscanf(registro,"%d",&volte);
fclose(registro);
if (volte == 1)
{
predisponifile(maindb);
aggiornaregistro(registro,volte);
}
printf("***Welcome to TONY_BETTER***\n");
start = scelta();
while(start != 4)
{
switch(start)
{
case 1:
login(maindb);
break;
case 2:
registrati(maindb);
break;
case 3:
logadmin(registro);
break;
default:
break;
}
start = scelta();
}
fclose(maindb);
printf("termine esecuzione,grazie per aver scelto TONY_BETTER\n");
fclose(gestiscielenco);
return 0;
}
è il main di un programma...all'inizio con fopen assegno gestiscielenco.txt, poi nella scelta che mi viene proposta inserisco 4 (in modo da non entrare in nessuna funzione), mi viene stampato "termine esecuzione..ecc" e poi-....."segmentation fault"
quindi l'istruzione incriminata è per forza l'ultima! ma non ne ho la minima idea del perche