Прямо сейчас вы используете _IONBF
, что означает без буферизации.Использование _IOFBF
вместо этого, вероятно, будет хорошим началом (это буферизация full ).Чтобы увеличить размер буфера, вы также захотите указать этот большой размер буфера в качестве четвертого параметра, например:
setvbuf(stdin, NULL, _IOFBF, 16384);
Это динамически распределяет пространство буфера.В зависимости от ситуации вы можете вместо этого передать ему буфер:
char mybuffer[32768];
setvbuf(stdin, mybuffer, _IOFBF, sizeof(mybuffer));