Aiuto, domani ho un esame! Ho un problema con l'inserimento in testa in una lista. Il problema è nel while, dentro il primo "if", mi dà errore nell'assegnamento dei puntatori... Grazie in anticipo!
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char nome[15];
char cognome[15];
int eta;
struct struttura *next;
} struttura;
struttura create (struttura head, struttura *pointer)
{
pointer = &head;
printf ("Inserisci nome.\n");
scanf ("%[^\n]s", &pointer->nome);
getchar ();
printf("Inserisci cognome.\n");
scanf ("%[^\n]s", &pointer->cognome);
printf ("Inserisci eta.\n");
scanf ("%d", &pointer->eta);
pointer->next = NULL;
return head;
}
void stampa(struttura head, struttura *pointer)
{
printf("\n\n");
//for (pointer = &head; pointer != NULL; pointer = pointer->next)
//{
printf ("Nome: %s\n", pointer->nome);
printf ("Cognome: %s\n", pointer->cognome);
printf ("Eta: %d\n", pointer->eta);
//}
}
void inserimento (struttura head, struttura *pointer, struttura *ptr)
{
char risposta;
printf ("Vuoi inserire altri utenti? Rispondi (y o n)\n");
scanf ("%c", &risposta);
while (1)
{
if (risposta == 'y')
{
ptr = (struttura*) malloc (sizeof (struttura));
printf ("Inserisci nome.\n");
scanf ("%[^\n]s", &ptr->nome);
getchar ();
printf("Inserisci cognome.\n");
scanf ("%[^\n]s", &ptr->cognome);
printf ("Inserisci eta.\n");
scanf ("%d", &ptr->eta);
ptr->next = head;
head = ptr;
}
else if (risposta == 'n')
{
break;
}
else
{
printf ("Risposta non valida, rispondi nuovamente.\n");
scanf ("%c", &risposta);
}
}
}
int main ()
{
struttura head;
struttura *pointer = NULL;
struttura *ptr = NULL;
head = create (head, pointer);
inserimento (head, pointer, ptr);
stampa (head, pointer);
return 0;
}