Ich würde vorschlagen, dass Sie diesen Artikel durchgehen.
Nicht blockierende Benutzereingabe in Schleife ohne ncurses.
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.
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.
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.
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%Tags und Links c infinite-loop getch