[risolto][C] segmentation fault con la fread
-
walkingcontradiction
- Prode Principiante
- Messaggi: 44
- Iscrizione: domenica 17 febbraio 2008, 12:44
[risolto][C] segmentation fault con la fread
Sono alle prime armi quindi eventualmente scusate gli strafalcioni :-[
Sto facendo un programmino semplice semplice in c, ma non riesco a leggere i dati dal file, in quanto, appena viene eseguita la fread, avviene un "segmentation fault (core dumped)".
il codice è una cosa del genere (ometto gli header e la get_filesize):
FILE* fp;
void *ptr;
int size;
//[...]
int main (){
fp=fopen("prova.aaa", "r");
//[...] controllo se l'apertura è avvenuta, tutto ok
size = Get_filesize("prova.aaa"); //la dimensione corrisponde a quella del file, tutto ok
ptr=malloc(size); //alloco la memoria per il buffer, faccio anche un controllo e la memoria risulta allocata
fread(ptr, 1, size, fp); //ho provato in alternativa scambiando 1 e size (che è la stessa cosa)
//[...]
}
Questo naturalmente è un estratto del codice. Come ho detto, ho constatato che la fread causa sistematicamente un sigmentation fault, e non capisco il perchè. Ho provato con un array normale, ma mi ha lo stesso problema!!! Qualcuno può spiegarmi come stanno le cose?
p.s. uso gcc
Sto facendo un programmino semplice semplice in c, ma non riesco a leggere i dati dal file, in quanto, appena viene eseguita la fread, avviene un "segmentation fault (core dumped)".
il codice è una cosa del genere (ometto gli header e la get_filesize):
FILE* fp;
void *ptr;
int size;
//[...]
int main (){
fp=fopen("prova.aaa", "r");
//[...] controllo se l'apertura è avvenuta, tutto ok
size = Get_filesize("prova.aaa"); //la dimensione corrisponde a quella del file, tutto ok
ptr=malloc(size); //alloco la memoria per il buffer, faccio anche un controllo e la memoria risulta allocata
fread(ptr, 1, size, fp); //ho provato in alternativa scambiando 1 e size (che è la stessa cosa)
//[...]
}
Questo naturalmente è un estratto del codice. Come ho detto, ho constatato che la fread causa sistematicamente un sigmentation fault, e non capisco il perchè. Ho provato con un array normale, ma mi ha lo stesso problema!!! Qualcuno può spiegarmi come stanno le cose?
p.s. uso gcc
Ultima modifica di walkingcontradiction il giovedì 21 febbraio 2008, 12:03, modificato 1 volta in totale.
- hds619
- Scoppiettante Seguace

- Messaggi: 352
- Iscrizione: domenica 15 aprile 2007, 20:23
- Località: Ferrara
- Contatti:
Re: [C] segmentation fault con la fread
Non apri il file in lettura binaria ( rb )
-
walkingcontradiction
- Prode Principiante
- Messaggi: 44
- Iscrizione: domenica 17 febbraio 2008, 12:44
Re: [C] segmentation fault con la fread
:primo strafalcione :-[
cmq ho corretto, ma il problema rimane.
[edit] ecco un mistero:
ho ricopiato le istruzioni riguardanti le operazioni sul file su un nuovo listato. Ho compilato e, funziona!!
Nel listato originale (che non posto per motivi di decenza), invece, il problema è sempre lo stesso. Sono sicuro che dipenda dalla fread perchè, quando la commento (ehm come si dice quando si mettono i segni di commento per disattivare una riga?), il programma non va in segmentation fault.
cmq ho corretto, ma il problema rimane.
[edit] ecco un mistero:
ho ricopiato le istruzioni riguardanti le operazioni sul file su un nuovo listato. Ho compilato e, funziona!!
Nel listato originale (che non posto per motivi di decenza), invece, il problema è sempre lo stesso. Sono sicuro che dipenda dalla fread perchè, quando la commento (ehm come si dice quando si mettono i segni di commento per disattivare una riga?), il programma non va in segmentation fault.
Ultima modifica di walkingcontradiction il giovedì 21 febbraio 2008, 11:50, modificato 1 volta in totale.
- hds619
- Scoppiettante Seguace

- Messaggi: 352
- Iscrizione: domenica 15 aprile 2007, 20:23
- Località: Ferrara
- Contatti:
Re: [C] segmentation fault con la fread
Provato a mettere all'inzio del programma un:walkingcontradiction ha scritto: :primo strafalcione :-[
cmq ho corretto, ma il problema rimane.
#define T printf("OK\n");
E disseminare di T qua e là il programma per vedere dov'è il problema?
( Metodo rozzo ma funzionante, almeno con me xD )
-
walkingcontradiction
- Prode Principiante
- Messaggi: 44
- Iscrizione: domenica 17 febbraio 2008, 12:44
Re: [C] segmentation fault con la fread
Il problema è in corrispondenza della fread, ne sono sicuro. Come sono sicuro che sia scritta bene (le stesse istruzioni su un listato nuovo funzionano)... mah!
- hds619
- Scoppiettante Seguace

- Messaggi: 352
- Iscrizione: domenica 15 aprile 2007, 20:23
- Località: Ferrara
- Contatti:
Re: [C] segmentation fault con la fread
Mah... misteri del C
-
walkingcontradiction
- Prode Principiante
- Messaggi: 44
- Iscrizione: domenica 17 febbraio 2008, 12:44
Re: [risolto][C] segmentation fault con la fread
Ok ho risolto, in realtà il file non era stato aperto correttamente, avevo sbagliato il controllo.... >:(
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti