[risolto][C] segmentation fault con la fread

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
walkingcontradiction
Prode Principiante
Messaggi: 44
Iscrizione: domenica 17 febbraio 2008, 12:44

[risolto][C] segmentation fault con la fread

Messaggio da walkingcontradiction »

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
Ultima modifica di walkingcontradiction il giovedì 21 febbraio 2008, 12:03, modificato 1 volta in totale.
Avatar utente
hds619
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 352
Iscrizione: domenica 15 aprile 2007, 20:23
Località: Ferrara
Contatti:

Re: [C] segmentation fault con la fread

Messaggio da hds619 »

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

Messaggio da walkingcontradiction »

: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.
Ultima modifica di walkingcontradiction il giovedì 21 febbraio 2008, 11:50, modificato 1 volta in totale.
Avatar utente
hds619
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 352
Iscrizione: domenica 15 aprile 2007, 20:23
Località: Ferrara
Contatti:

Re: [C] segmentation fault con la fread

Messaggio da hds619 »

walkingcontradiction ha scritto: :primo strafalcione  :-[

cmq ho corretto, ma il problema rimane.
Provato a mettere all'inzio del programma un:

#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

Messaggio da walkingcontradiction »

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!
Avatar utente
hds619
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 352
Iscrizione: domenica 15 aprile 2007, 20:23
Località: Ferrara
Contatti:

Re: [C] segmentation fault con la fread

Messaggio da hds619 »

Mah... misteri del C
walkingcontradiction
Prode Principiante
Messaggi: 44
Iscrizione: domenica 17 febbraio 2008, 12:44

Re: [risolto][C] segmentation fault con la fread

Messaggio da walkingcontradiction »

Ok ho risolto, in realtà il file non era stato aperto correttamente, avevo sbagliato il controllo....  >:(
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti