Ragazzi ho da poco finito di completare questo programma che non fa altro che creare una lista concatenata semplice di stringe e stamparla. Il programma termina quando mettete il carattere 0, il mio problema sta nel fatto che se metto parole inferiori a 4 lettere funziona perfettamente ma se metto ad esempio "nonno" la o me la stampa male come se non la riconoscesse. Ringrazio in anticipo ogni aiuto.
codice:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
typedef struct L1
{
char dato;
struct L1 *next;
} L;
L *crealista();
void visualizzalista(L *p);
int main()
{
L *l;
l=crealista();
visualizzalista(l);
}
L *crealista()
{
L *p,*punt;
int m=2;
printf("Inserisci la 1 stringa: ");
p=(L*)malloc(sizeof(L)*10);
scanf("%s",&p->dato);
punt=p;
while(punt->dato!='0')
{
punt->next=(L*)malloc(sizeof(L));
punt=punt->next;
printf("Inserisci la %d stringa: ",m);
scanf("%s",&punt->dato);
m++;
}
punt->next=NULL;
return (p);
}
void visualizzalista(L *p)
{
printf("lista");
while(p!=NULL)
{
printf("-->");
printf("%s",&p->dato);
p=p->next;
}
printf("\n");
}