In response to a question on Quora, I offered the following code example that turns off terminal buffering on both Windows and Linux:
#include <stdio.h> #ifdef _WIN32 #include <windows.h> #else #include <termios.h> #include <sys/ioctl.h> #endif int main() { int c; #ifdef WIN32 HANDLE hCon; DWORD dwMode; hCon = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(hCon, &dwMode); SetConsoleMode(hCon, dwMode & !ENABLE_LINE_INPUT); #else struct termios ts; ioctl(0, TCGETS, &ts); ts.c_lflag &= !ICANON; ioctl(0, TCSETS, &ts); #endif c = getchar(); while (c != EOF) { printf("getchar received %c\n", c); c = getchar(); } }