(RISOLTO) Rilevare la pressione di un tasto senza interrompere il programma

di Anonimizzato32078 il
7 risposte
Ciao a tutti, sto creando un programma in c e sono arrivato in un punto in cui ho questo ciclo infinito nella quale vengono svolte varie operazioni. In questo ciclo vorrei mettere una specie di if in cui se viene premuto un qualsiasi pulsante compie una determinata azione e poi continua sulla sua strada con tutto l'algoritmo. Il problema è: è possibile fare ciò senza interrompere il resto del programma?
Grazie in anticipo!

7 Risposte

  • Non è molto standard, al tempo usavo kbhit().

    ma se non ricordo male era legato al mondo ms-dos.
  • Grazie, adesso provo a informarmi un po'.
    Altrimenti con un timeout si potrebbe combinare qualcosa?
  • Kbhit() è in conio.h in Windows oppure ncurses.h in Linux.

    Se l'operazione deve essere in contemporanea parallelamente ad un altra routine ti servono anche i thread
  • Di solito a livello "amatoriale" si utilizza l'accoppiata kbhit() e getch().
  • Weierstrass ha scritto:


    Kbhit() è in conio.h in Windows oppure ncurses.h in Linux.

    Se l'operazione deve essere in contemporanea parallelamente ad un altra routine ti servono anche i thread
    Scusa l'ignoranza, ma ho appena cominciato a programmare in c.
    Ma cosa sono i thread e come li uso?
  • Allora lascia perdere. Su C sono un po' complicati rispetto al C++. Usa la soluzione di Nippolo con if(kbhit()) e getch() all'interno per leggere il carattere
  • Grazie a tutti alla fine sono riuscito con kbhit() e getch().
    Grazie ancora
    ps. vi lascio un esempio per chi avesse bisogno (prima e dopo l'if ci potete mettere tutto il resto del codice)

    #include <std.io>
    #include <conio.h>
    int main()
    {
    char ch;
    while (1) {

    if ( kbhit() )
    {
    ch = getch();
    printf("\nKey pressed= %c", ch);
    }

    }
    return 0;
    }
Devi accedere o registrarti per scrivere nel forum
7 risposte