Salve, sto trattando le liste e sto effettuando degli "allenamenti" su di esse..
ho scritto questo programino che crea una lista a descrizione dell'utente:

codice:
#include <stdio.h>
#include <stdlib.h>

struct utente
{
	int id;
	struct utente *next;
};

int main(void)
{
	char 	ris;
	struct utente *testa, *variante;

	testa = malloc(sizeof(struct utente));
	printf("Inserisci l'ID dell'utente: ");	scanf("%d", &testa->id);
	variante = testa;
	
	printf(" - Altro utente da inserire? - ");	scanf("%s",&ris);
	while( ris != 'n')
	{
		variante->next = malloc(sizeof(struct utente));
		printf("Inserisci l'ID dell'utente: "); scanf("%d", &variante->next->id);
		variante->next->next= NULL;
		variante = variante->next;

		printf(" - Altro utente da inserire? - ");
		scanf("%s",&ris);	
	}	
	
	printf("%d", testa->id);
	printf("\n programma terminatao \n");

	return 0;
}
l'intento è avere "testa" con il quale posso arrivare a tutti i membri della mia lista, ma il problema che non riesco a risolvere, è perché, "testa" scompare quando entro nel while.. anche se non faccio operazioni..

quando faccio

codice:
printf("%d", testa->id);
il risultato è sempre 0

anche se il while è cosi formato:

codice:
....
	while( ris != 'n')
	{
		printf("%d", testa->id);

		printf(" - Altro utente da inserire? - ");
		scanf("%s",&ris);	
	}	
......

dove sbaglio?