C Beenden der Endlosschleife bei Tastendruck

8

Wie kann ich eine Endlosschleife verlassen, wenn eine Taste gedrückt wird? Momentan benutze ich getch, aber es wird sofort anfangen, meine Schleife zu blockieren, da es keine weitere Eingabe mehr zu lesen gibt.

    
Ragnis 18.07.2011, 10:07
quelle

5 Antworten

2

Ich würde vorschlagen, dass Sie diesen Artikel durchgehen.

Nicht blockierende Benutzereingabe in Schleife ohne ncurses.

    
Talha Ahmed Khan 18.07.2011, 10:19
quelle
4

Wenn Sie getch() von conio.h trotzdem verwenden, versuchen Sie stattdessen, kbhit() zu verwenden. Beachten Sie, dass sowohl getch() als auch kbhit() - conio.h tatsächlich nicht Standard C sind.

    
Rudy Velthuis 18.07.2011 10:17
quelle
2

Die Funktion kbhit() from conio.h gibt einen Wert ungleich Null zurück, wenn eine Taste gedrückt wird, aber nicht wie getch() . Das ist offensichtlich kein Standard. Aber da du getch() bereits von conio.h verwendest, denke ich, dass dein Compiler das hat.

%Vor%

Von Wikipedia ,

  

conio.h ist eine C-Headerdatei, die in alten MS-DOS-Compilern zum Erstellen von Textbenutzeroberflächen verwendet wird. Es ist nicht in der C Programmiersprache beschrieben, und es ist nicht Teil der C-Standard-Bibliothek, ISO C noch wird es von POSIX benötigt.

     

Die meisten C-Compiler, die auf DOS, Windows 3.x, Phar Lap, DOSX, OS / 2 oder Win32 zielen 1 haben diesen Header und liefern die zugehörigen Bibliotheksfunktionen in der Standard-C-Bibliothek. Die meisten C-Compiler, die auf UNIX und Linux abzielen, haben diesen Header nicht und liefern keine Bibliotheksfunktionen.

    
taskinoor 18.07.2011 10:18
quelle
0
%Vor%     
user6060781 14.03.2016 12:22
quelle
0

Wenn Sie keinen nicht standardmäßigen, nicht blockierenden und dennoch eleganten Ausgang verwenden möchten. Verwenden Sie Signale und Strg + C mit benutzerdefinierten Signalhandler zu bereinigen. Etwas wie das:

%Vor%     
Milind Deore 27.12.2017 12:14
quelle

Tags und Links