Ciao,
visti i grossi problemi sulle liste di liste, sto facendo esercizio sulla lista semplice...
in pratica se metto i dati troppo velocemente da tastiera il programma si blocca?codice:#include <stdio.h> #include <stdlib.h> #include <string.h> void pulisci( char temp[20]) { int i; for(i=0;i<=19;i++) { temp[i]=""; } } typedef struct t_automobile //struttura accessori { char macchina[20]; struct t_automobile *next; } Auto,*PointAuto; int main() { int flag=0; char temp[20]={"\0"}; PointAuto HeadAuto=NULL,CurrPtr=NULL,PrevPtr=NULL; // puntatori a struct automobile HeadAuto=(PointAuto)malloc(sizeof(PointAuto)); // crea il primo elemento della lista; CurrPtr=HeadAuto; printf("Inserire l'automobile, F per finire:"); scanf("%s",temp); while(strcmp(temp,"F")!=0) // ciclo per le auto { strcpy(CurrPtr->macchina,temp); // copia il nome dell auto nel campo macchina della struttura automobile PrevPtr=CurrPtr; CurrPtr=(PointAuto)malloc(sizeof(PointAuto)); //Crezione del nuovo elemento della lista macchine PrevPtr->next=CurrPtr; // creo il link al prossimo elemento della lista fflush(stdin); pulisci(temp); printf("Inserire l'automobile, F per finire:"); scanf("%s",temp); } PrevPtr->next=NULL; CurrPtr=HeadAuto; do { printf("%s->",CurrPtr->macchina); CurrPtr=CurrPtr->next; }while(CurrPtr!=NULL); free(HeadAuto); system("pause"); return 0;
Sbaglio forse l assegnazione dei puntatori? O forse la scanf non e adatta per lo scopo?
Quando poi riesco a immettere i dati e a terminare l inserimento con F a volte durante la stampa si blocca....qualcuno mi dice se ci sono errori logici?
Grazie!
Saluti![]()
![]()

Rispondi quotando