VendeR
05-04-2006, 20:04
raga ho un problema strano: ho fatto in laboratorio di info un programma che funzionava perfettamente, ma appena tornato a casa lo stesso identico codice non ne ha più voluto saperne di funzionare.. mi da sempre "errore di segmentazione". da cosa può essere causato?
l'unica cosa che mi viene in mente è che in laboratorio i pc hanno installato win2000, mentre sul mio pc (ho provato anche su quello di un mio amico ma è lo stesso) ho win xp.. può essere causato dal differente os? avreste una idea su come poter risolvere il problema??
il programma (la parte che genera l'errore e che vi ho incollato qui sotto) apre un file di testo, e, allocando dinamicamente la memoria (la lunghezza del vettore di strutture), salva i valori letti su un vettore di strutture..
o almeno così faceva.. :mbe:
int main (){
int i;
char stringa[100];
struct censura {
char sba [100];
char giu [100];
};
FILE *fpo;
FILE *fpc;
struct censura *ip;
if((fpc=fopen("correzione.txt","r"))==NULL){
printf("Errore letture file correzione.\n");
}
else{
while(!feof(fpc)){
ip=(struct censura *) realloc(ip ,sizeof (struct censura)*(i+1));
/*QUA DA ERRORE DI SEGMENTAZIONE*/
fscanf(fpc,"%s %s",ip[i].sba,ip[i].giu);
printf("%s %s\n",ip[i].sba,ip[i].giu);
i++;
}
}
fclose(fpc);
l'unica cosa che mi viene in mente è che in laboratorio i pc hanno installato win2000, mentre sul mio pc (ho provato anche su quello di un mio amico ma è lo stesso) ho win xp.. può essere causato dal differente os? avreste una idea su come poter risolvere il problema??
il programma (la parte che genera l'errore e che vi ho incollato qui sotto) apre un file di testo, e, allocando dinamicamente la memoria (la lunghezza del vettore di strutture), salva i valori letti su un vettore di strutture..
o almeno così faceva.. :mbe:
int main (){
int i;
char stringa[100];
struct censura {
char sba [100];
char giu [100];
};
FILE *fpo;
FILE *fpc;
struct censura *ip;
if((fpc=fopen("correzione.txt","r"))==NULL){
printf("Errore letture file correzione.\n");
}
else{
while(!feof(fpc)){
ip=(struct censura *) realloc(ip ,sizeof (struct censura)*(i+1));
/*QUA DA ERRORE DI SEGMENTAZIONE*/
fscanf(fpc,"%s %s",ip[i].sba,ip[i].giu);
printf("%s %s\n",ip[i].sba,ip[i].giu);
i++;
}
}
fclose(fpc);