Il codice che ho scritto è il seguente:
codice:
#include <stdio.h>#include <malloc.h>
typedef struct elemento{
char nome[20];
int v_media;
struct elemento *next;
}elemento;
struct elemento *crea_lista()
{
elemento *p, *punt;
int i;//indice del ciclo
int n = 12;//numero elementi che si intende inserire
p=NULL;
p = (struct elemento *)malloc(sizeof(struct elemento));
FILE *catalogo= fopen("elenco_auto.txt","r");
fscanf(catalogo, "%s", p->nome);
fscanf(catalogo, "%i", &p->v_media);
/*scanf("%s", p->nome);
scanf("%i", & p->v_media);*/
punt = p;
for(i=3; i<=n; i++)
{
punt->next = (struct elemento *)malloc(sizeof(struct elemento));
punt = punt->next;
fscanf(catalogo, "%s", punt->nome);
fscanf(catalogo, "%i", &punt->v_media);
/*scanf("%s", punt->nome);
scanf("%i", &punt->v_media);*/
} // chiudo il for
punt->next = NULL; // marcatore fine lista
fclose(catalogo);
return(p);
}
int main()
{
struct elemento *lista; // puntatore della lista
lista = crea_lista(); // crea la lista
visualizza_lista(lista); // stampa la lista
return 0;
}
Visualizza lista semplicemente mi scrive cosa contiene la lista che ho creato. Ma l'output che ricevo è il seguente:
lista —> (i792094066 —> (i1868852841 —> (i1766203502 —> (i1852397404 —> (i1953724755 —> (i2003783795 —> (i1852789596 —> (i1176530273 —> (i1936876915 —> (i1131308400 —> (i1096577906 —> NULL
Invece dovrebbe essere lista -> nome1 -> 65 -> nome2 -> 75... ecc.
Sapresti dirmi cosa sbaglio?