Ciao,
devo scrivere un programma che fà le seguenti cose:
immessa una stringa con una funzione mette in una lista ogni carattere della stringa fino alla fine della stringa.

Poi con un'altra funzione stampa i caratteri cntenuti nel membro apposito di ogni nodo e stampa di quanti nodi è formata la stringa....la prima funzione dovrebbe funzionare correttamente...la seconda sbrocca....come mai?

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

struct lista{
	char carattere;
	struct lista *next;
};

struct lista *StringToList(char *);
void stampalista(struct lista *);

int main(){

	char stringa[100];
	struct lista *head; 

	printf("Inserire una stringa: ");
	scanf("%s", stringa);
	head = StringToList(stringa);
	stampalista(head);
	
	return 0;
}

struct lista *StringToList(char *s){
	
	struct lista *head = NULL;     // Crea il puntatore al primo nodo e impostalo a NULL
	struct lista *a;		     //	Puntatore a nodo generico
	int i;
	
	if(s[0] != '\0'){	     // Se il primo carattere della stringa non è nullo
		head = malloc(sizeof(struct lista));	// alloca memoria per il primo nodo della lista
		head->carattere = s[0];
		head->next = NULL;
		a = head;
	
		for(i=1; s[i] != '\0'; i++){
			a->next = malloc(sizeof(struct lista));
			a->carattere = s[i];
			a = a->next;
		}
	}
		a->next = NULL;		
		return(head);
	
}

void stampalista(struct lista *i){

		int counter = 0;
		while(i->next != '\0'){
			printf("%c", i->carattere);
			counter ++;
		}
		printf("\nIl numero di nodi della lista corrisponde a: %d\n\n", counter);
}
Grazie
Andrea