Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C-linux] fopen e segmentation fault

    Salve a tutti, vorrei capire un più a proposito di un errore che mi si presenta molto, troppo spesso. Ed è praticamente un segmentation fault nel punto di apertura di un file: ecco il mio codice:

    [/code]
    intSommaAnno=0;
    char dataAux[1024];
    fq=fopen("prova.txt","r");
    if(fq!=NULL){
    printf ("Il file esiste");
    while(fgets(dataAux,1024,fq)!=NULL){
    strtok(dataAux,";");
    intSommaAnno+=atoi(strtok(NULL,";"));
    }
    fclose(fq);
    }else{printf ("Il file anno NON esiste");}
    [code]

    In pratica, leggo riga per riga, scindo i vari valori (i quali sono separati in un file da un ";") e faccio la somma delle righe.

    Io non ci vedo nulla di male... invece, sempre e constantemente segmentation fault...poi faccio qualche modifica casuale...e alla fine funziona...ma non ancora ben capito cosa succede. Ogni volta per aprire un file è una sofferenza...

    Grazie.
    seminate linux che windows si pianta da se

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    avevo un probl simile l'altro giorno, ma quando facevo fclose.
    Siccome fopen alloca dinamicamente la memoria, non è che in qualche riga di codice precedente hai un qualcosa che va a 'sporcare' la memoria?
    mi spiego meglio
    è possibile che in qualche punto del programma (precedente all'apertura del file) tu gli faccia fare al programma delle operazioni 'illegali' che, li per li non danno problema.
    Nel mio caso, sforavo un array di due celle che, li per li non dava alcun errore, poi, quando deallocavo memoria, mi spuntava un casino di roba...
    prova a fare una debagging con gdb

    sciau (e fozza catania)
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  3. #3
    fozza catania sempre!

    può darsi, perchè pima apro e chiudo lo stesso file un paio di volte. ma non mi da mai problemi. Solo lì...e solo per quel file. Ovvero, se cambio file: nessun problema. Che può essere? Io ancora non ho capito bene questa cosa della gestione della memoria...che succede quando apro un file? il mio puntatore non si pone sulla prima cella in memoria dove risiede il file?

    Cmq, ho provato a metterla come prima azione...e il problema rimane. mah,....lunedì se ne parla...
    seminate linux che windows si pianta da se

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    posta il codice e nn se ne parla più
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  5. #5

    Re: [C-linux] fopen e segmentation fault

    Originariamente inviato da Ippolito Nievo
    poi faccio qualche modifica casuale...e alla fine funziona...ma non ancora ben capito cosa succede. Ogni volta per aprire un file è una sofferenza...
    E' una tecnica di programmazione un po' inefficiente ma prima o poi, forte del Teorema della scimmia instancabile, ci si azzecca.
    ;-)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Re: [C-linux] fopen e segmentation fault

    Originariamente inviato da MacApp
    ...Teorema della scimmia instancabile...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.