Problema esercizio C

di il
2 risposte

Problema esercizio C

Ciao a tutti ho dei problemi con un programma (Concessonaria_Auto) in C:

Vi spiego in poche parole cosa ho fatto:

ho un file .txt, da questo file ogni riga contiene i campi:
Marca:Modello:Anno:Numcav:Prezzo

(Esempio riga ----> Alfa Romeo:Mito:2010:110:14000)
PS:i due punti li uso come separatore

dal file creo una lista

Nella compilazione non ho errori, però credo di sbagliare qualcosa quando creo la lista dal file.
Ho provato a stampare gli elementi della lista, nel main (dopo aver creato la lista)

while (auto->next!=NULL)	 { 
		printf("%s\n",auto->marca);
		printf("%s\n",auto->modello);
		printf("%s\n",auto->anno);
		printf("%d\n",auto->numcav);
		printf("%d\n",auto->prezzo);
		auto=auto->next;
	}

ottenendo come risultato dell'esecuzione "Segmentation fault", la malloc credo di averla scritta bene, comunque vi posto parte del main dove creo la lista

int main() {
        libc auto;                            
	FILE *fp;
	int scelta;
	//creare lista dai dati contenuti nel file

	auto = newlist();
	if ((fp=fopen(USER_FILE,"r" )) == NULL ) {
		printf ("Errore: impossibile aprire il file %s\n",USER_FILE);
		exit(1);
	}
	while (!feof(fp)) {
		auto = malloc(sizeof(automobile));
		auto->next = NULL;
		fscanf(fp, "%s:%s:%s:%d:%d:\n", auto->marca, auto->modello, auto->anno, &(auto->numcav), &(auto->prezzo));
	    auto=auto->next;
	    conta++;
     }

2 Risposte

  • Re: Problema esercizio C

    auto->next = NULL;
    ...............
           auto=auto->next;
    Questo sifnigica:
    auto = NULL;
    per la regola del tre.

    Quando poi vai a stampare siccome auto == NULL non esiste il next di NULL da cui l'errore.
  • Re: Problema esercizio C

    Grazie dell'aiuto, ho provato a eliminare
    auto->next = NULL;

    ma mi da sempre errore di segmentazione
Devi accedere o registrarti per scrivere nel forum
2 risposte