Is there a way to get text as soon as possible without waiting for a newline?

前端 未结 4 1148
孤独总比滥情好
孤独总比滥情好 2021-01-26 04:04

I\'m using C. I wrote a very simpe program which prints back the input, using getchar() and putchar() or printf(). Is there any way to make it so as soon as the user types one k

4条回答
  •  终归单人心
    2021-01-26 04:42

    In this simple case, the other answers should suit you fine.

    The general solution is to disable line buffering. This depends on the particular console; the following example is Windows-only (untested):

    #include 
    
    int main() {
        HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE);
        DWORD mode;
        GetConsoleMode(hConsole, &mode);
        SetConsoleMode(hConsole, mode & ~ENABLE_LINE_INPUT);
        // ...
    }
    

    I assume that the standard C library functions are implemented in terms of ReadConsole and friends; if not, this might not even work. (I'm currently on Linux, so I cannot test this.)

提交回复
热议问题