Es gibt keine Standardbibliotheksfunktion in c, um dies zu erreichen; Stattdessen müssen Sie Ter- miosfunktionen verwenden, um die Kontrolle über das Terminal zu erlangen und es dann nach dem Lesen der Eingabe zurückzusetzen.
Ich stieß auf Code, um Eingaben von Stdin zu lesen, ohne auf ein Trennzeichen zu warten here.
Wenn Sie Linux verwenden und einen Standard-c-Compiler verwenden, wird getch() nicht leicht für Sie verfügbar sein. Daher habe ich den Code in den Link implementiert und Sie müssen nur diesen Code einfügen und verwenden Sie die getch() -Funktion normal.
#include <termios.h>
#include <stdio.h>
static struct termios old, new;
/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
tcgetattr(0, &old); /* grab old terminal i/o settings */
new = old; /* make new settings same as old settings */
new.c_lflag &= ~ICANON; /* disable buffered i/o */
new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}
/* Read 1 character - echo defines echo mode */
char getch_(int echo)
{
char ch;
initTermios(echo);
ch = getchar();
resetTermios();
return ch;
}
/* Read 1 character without echo */
char getch(void)
{
return getch_(0);
}
int main()
{
int ch;
ch = getch();//just use this wherever you want to take the input
printf("%d", ch);
return 0;
}
Wie hören Sie Benutzereingaben? Stdin? – xhg
Verwenden Sie eine Endlosschleife, in der Sie eine Funktion mit dem Namen if (kbhit()) aufrufen, und wenn sie true zurückgibt, können Sie getch verwenden, um die Eingabe ohne Echo zu erhalten –
[fgetc] (https://linux.die.net/man/3/fgetc) ist dein Freund – LPs