PDA

Visualizza la versione completa : [C] Chiamata a getchar() viene saltata


qwerty999
03-07-2019, 14:15
salve a tutti , il problema semplice ...nel codice utilizzo 2 getchar .... il primo come se venisse saltato ,quindi non devo premere nessun tasto per contunuare mentre il secondo funziona correttamente..... non capisco proprio dove sbaglio....... vi lascio il codice in questione ....

for (int i = 0; i < 999999 ; i++) {printf("Ciccio tocca a te,spara con il tuo lanciarazzi per provare a distruggere la torre di Ninja!\n\n" );
sleep(1);
printf("Premi un tasto per sparare !\n" );
getchar();
sleep(2);
if (rand()%101<=colpo_ciccio) {
printf("Il colpo andato a segno! Hai distrutto un piano della torre di Ninja!\n\n" );//rimozione testa lista
eliminatesta_torre(&listaNinja);
--Ninja.zaino[materiale];//rimozione testa lista
--Ciccio.zaino[colpi_lanciarazzi];
if(Ciccio.zaino[materiale]==0||Ninja.zaino[colpi_lanciarazzi]==0||Ninja.zaino[materiale]==0||Ciccio.zaino[colpi_lanciarazzi]==0){
break;
}
}else{
printf("Hai mancato il bersaglio, ritenta!\n\n");
--Ciccio.zaino[colpi_lanciarazzi];
if (Ciccio.zaino[colpi_lanciarazzi]==0) {
break;
}
}
sleep(2);
printf("Ninja tocca a te ,spara con il tuo lanciarazzi per provare a distruggere la torre di Ciccio\n\n" );
sleep(1);
printf("Premi un tasto per sparare !\n" );
getchar();
sleep(2);
if (rand()%101<=colpo_ninja) {
printf("Il colpo andato a segno! Hai distrutto un piano della torre di Ciccio!\n\n" );//rimozione testa lista
eliminatesta_torre(&listaCiccio);
--Ciccio.zaino[materiale];//rimozione testa lista
--Ninja.zaino[colpi_lanciarazzi];
if(Ciccio.zaino[materiale]==0||Ninja.zaino[colpi_lanciarazzi]==0||Ninja.zaino[materiale]==0||Ciccio.zaino[colpi_lanciarazzi]==0){
break;
}
}else{
printf("Hai mancato il bersaglio, ritenta!\n\n");
--Ninja.zaino[colpi_lanciarazzi];
if (Ninja.zaino[colpi_lanciarazzi]==0) {
break;
}
}
printf("Queste sono le vostre torri allo stato attuale!\n\n" );


visualizza_torre(listaNinja); // stampa la lista ninja
visualizza_torre(listaCiccio);// stampa lista ciccio
sleep(2);
}

LeleFT
03-07-2019, 18:53
Manca tutto il codice che viene prima di quella getchar(). Molto probabilmente, nel codice PRIMA, fai qualche altra lettura da tastiera usando funzioni tipo scanf() o similari le quali lasciano un INVIO nel buffer, che viene consumato dalla prima getchar().


Ciao. :ciauz:

qwerty999
05-07-2019, 16:17
capisco , non credevo che il problema fosse prima ..comunque s, prima uso degli scanf ...con 2 coppie di getchar ora gira ma non so se la cosa pi "giusta" e pulita da fare ...

Loading