setvbuf не может сделать stdin небуферизованным

Мое главное намерение состояло в том, чтобы заставить getcharвозвращаться, как только он получает символ, вместо того, чтобы ждать клавиши ENTER. Я пробовал это

int main()
{
    setvbuf(stdin,NULL,_IONBF,0);
    getchar();

    return 0;
}

Сравнивая это с прототипом setvbuf

setvbuf ( FILE * stream, char * buffer, int mode, size_t size );

, он должен установить stdinв небуферизованный режим.

Но все же getchar()продолжает ждать ENTER

Я видел похожие сообщения, подобные этому

Печать при чтении символов в C

, которые предлагают альтернативные методы для сделать stdinнебуферизованным. Но мне любопытно узнать, почему метод setvbufне работает

10
задан Community 23 May 2017 в 12:25
поделиться