Salve a tutti, ho di nuovo problemi con le liste e più i particolare con l'acquisizione dei valori da file.
Ora non ho postato il contenuto del file ma ci sono 5 righe contenenti in ordine nome, cognome, matricola, materia e voto.
Fin qui sembra essere ok, nel senso che la funzione di acquisizione sembra funzionare, ma quando nel main faccio la stampa, essa termina con uno strano return (un errore quindi) e non stampa la successiva printf ("SONO QUI")..
Sono diversi giorni che mi riguardo questo programma e non capisco l'errore/gli errori (o orrori)...
#include <stdio.h>
#include <string.h>
struct nodo {
char nome [20];
char cognome [20];
int matricola;
char materia[20];
int voto;
struct nodo *next;
};
typedef struct nodo ElementoDiLista;
typedef ElementoDiLista* ListaDiElementi;
void InserisciInTesta(ListaDiElementi *testa);
int main() {
ListaDiElementi Testa;
InserisciInTesta(&Testa);
ElementoDiLista* tmp = Testa;
while(tmp != NULL) {
printf("%s %s %d %s %d\n", tmp->nome, tmp->cognome, tmp->matricola, tmp->materia, tmp->voto);
tmp = tmp->next;
}
printf("SONO QUI\n");
return 0;
}
ElementoDiLista* CreaNodo() {
ElementoDiLista* temp = (ElementoDiLista *)malloc(sizeof(ElementoDiLista));
if(temp) {
temp->next = NULL;
return temp;
}
else printf("Errore!\n");
}
void InserisciInTesta(ListaDiElementi* testa) {
FILE *fp;
fp = fopen("input.txt", "r");
while(!feof(fp)) {
ElementoDiLista* temp = CreaNodo();
fscanf(fp, "%s %s %d %s %d", &temp->nome, &temp->cognome, &temp->matricola, &temp->materia, &temp->voto);
if(*testa == NULL) {
*testa = temp;
}
else {
temp->next = *testa;
*testa = temp;
}
}
fclose(fp);
}