我将stdin
设置为全缓冲,如下所示:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buffer[BUFSIZ];
if (setvbuf(stdin, buffer, _IOFBF, BUFSIZ) != 0) { // here
printf("an error occured.\n");
exit(1);
}
int number;
scanf("%d", &number);
printf("number : %d\n", number);
return 0;
}
然而,结果表明stdin
仍然是行缓冲的。为什么会这样?
3
number : 3