Tag: 偷看

有没有办法偷看stdin缓冲区?

我们知道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”,现在我在stdin留下了“数据”( ct\n ),而不仅仅是换行符。