Salve ragazzi ho un problema a stampare questo programma , in poche parole questo deve prendere dei numeri da un file .txt e stamparli a video tramite una linked list , il problema che mi da e che in primis stampa al contrario i numeri e oltre a questo non mi stampa l ultimo numero , stampandomi al suo posto un allocazione di memoria , allego il codice, grazie.
#include<stdlib.h>
#include<stdio.h>
struct lista_ins
{
int elem;
struct node *next;
}; typedef struct lista_ins lista;
//prototipi di funzione
void print (lista *lista1);
int main ()
{
lista * lista1=NULL;
lista *head;
head = NULL;
insert_lista(&lista1);
print(&lista1);
}
int insert_lista(lista *lista1)
{
lista * listat=NULL;
FILE *fp;
lista *cursore;
fp = fopen("ins.txt","r");
if(fp==NULL){
printf("error 404, file not found");
}else{
while(!feof(fp) ) {
//printf("entra"); // qui ho notato che nel ciclo entra 6 volte mentre i numeri sono 5
listat=(lista *)malloc(sizeof(lista));
fscanf(fp,"%d",&listat->elem);
listat->next=lista1->next;
lista1->next=listat;
//printf("%d\t",listat->elem); // Qui provavo a stampare direttamente dopo aver preso i vaolori , stesso errore
}
}
}
void print (lista *lista1)
{
lista *temp;
temp=lista1->next;
lista1->next=temp;
while(temp->next!=NULL){
printf("%d\n",temp->elem);
temp=temp->next;
}
}