Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Chiamata a getchar() viene saltata

    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 ....
    codice:
    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);
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    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 ...
    Ultima modifica di qwerty999; 05-07-2019 a 15:24

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.