hai ragione manco mezzo commento ho scritto![]()
allora :
nell altro codice quando vado ad eseguire, inserisco i campi, e quello che accade è che, dopo aver inserito l ultimo campo, il programma non torna ricorsivamente come fa questo! in parole povere (*) scanf("%d", & p->info); inserisce un elemento subito dopo aver inserito "info" questo torna all inizio del programma chiedendomi se voglio aggiungere un altro elementocodice:struct elemento *crealista(){ char c; struct elemento *p; printf("Vuoi inserire degli elementi? \n"); scanf("%c" , &c); //prima interrogazione da parte dell input avvia il programma se premi 's' if(c == 'n'){ p=NULL; } else if(c == 's'){ while(c == 's'){ //se premi 's' fino a che non cambi il valore di c ( = 's') p=(struct elemento*)malloc(sizeof(struct elemento)); //fai posto printf(" inserisci elemento : "); * scanf("%d" , & p->info); //inserisci informazini * scanf("%c", &c); // leggi da input un nuovo valore per chiedere se si vuole continuare o meno if( c == 'n' ) p->next=NULL; else p->next=crealista(); } } return (p); }
il secondo codice, da cui ho preso la stessa struttura, all inserimento dell' ultimo dato non mi torna all inizio del programma come fa questo...
[CODE]
struct ospite *crealista(){
struct ospite *p;
char nome[50];
char c;
int stanza;
printf("premi s per iniziare \n");
scanf("%c", &c);
printf("crea ospite \n");
if( c == 'n'){
p=NULL;
}
else if( c == 's' ){
while(c == 's'){
p=(struct ospite*)malloc(sizeof(struct ospite));
printf(" Nome e cognome : ");
scanf("%s", nome);
strcpy( p->nome , nome);
printf( " numero di stanza : ");
scanf("%d",& p->stanza);
printf(" data di entrata : \n");
printf("giorno :");
scanf("%d", & p->checkin.giorno);
printf("\n mese : ");
scanf("%d", & p->checkin.mese);
printf("\n anno : ");
scanf("%d", & p->checkin.anno);
printf(" data del logout ? \n");
printf("giorno :");
scanf("%d", & p->checkout.giorno);
printf("\n mese : ");
scanf("%d", & p->checkout.mese);
printf("\n anno : ");
scanf("%d ", &p->checkout.anno);
scanf("%c", &c);
if(c == 's')
p->next=crealista();
if( c== 'n')
p->next=NULL;
}
}
return(p);
}
[/CODE ]

Rispondi quotando