我们知道,stdin
默认情况下,这是一个缓冲输入;证明是使用任何“保留数据”的机制stdin
,例如scanf()
:
int main()
{
char c[10] = {'\0'};
scanf("%9s", c);
printf("%s, and left is: %d\n", c, getchar());
return 0;
}
./a.out
你好
你好,左边是10
10
当然是换行...
我一直很好奇,有没有什么办法可以“偷看”stdin
缓冲区而不删除那里可能存在的任何东西?
编辑
一个更好的例子可能是:
scanf("%9[^.]", c);
输入“at.ct”,现在我ct\n
留下了“数据”()stdin
,而不仅仅是换行符。