Остановка ввода без enter в си

Написал програму, которая первые 10 символов с клавиатуры записывает в файл, но проблема в том, что я могу ввести и 100 символов, а программа завершиться только когда я нажму enter, как сделать сохранение в файл до нажатия клавиши enter или просто хотя бы завершить работу по факту ввода 10 символов. (OS Windows).

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
    int c,i=0;
    freopen("OUTPUT.txt", "w", stdout);
    while ((c = getc(stdin)) != EOF && i<10) {
        putc(c, stdout);
        i++;
    }
    return 0;
}

Ответы (2 шт):

Автор решения: Sergey

stdin - это не устройство, а буферируемый файл. Передача блока данных от драйвера клавиатуры в прикладную программу произойдёт только после нажатия клавиши Enter.

Для того, что бы работать на уровне отдельного нажатия клавиши на клавиатуре необходимы другие средства.

Проще всего - использовать библиотеку ncurses. Она большая и довольно сложная, но там есть посимвольный ввод/вывод.

→ Ссылка
Автор решения: Mikhail

Нашел способ проще, использовал getch()

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main() {
    int c;
    freopen("OUTPUT.txt", "w", stdout);
    while (c = _getch()) {
        putc(c, stdout);
        fflush(stdout);
    }
    return 0;
}
→ Ссылка