当我读到一本关于linux编程的书时,我就想到了这一点,我在电脑上试了一下,代码运行得很好,但我就是不明白它是怎么工作的,希望有人能帮我解释一下,提前谢谢!
我的代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
setbuf(stdin, NULL);
unsigned char ch = 'a';
unsigned char pch = ungetc(ch, stdin);
char c = getchar();
putchar(c);
return 0;
}
最佳答案
无论缓冲区设置如何,ungetc
必须始终能够将一个字符推回到输入流中。如果尝试推送多个字符,ungetc
可能会失败。(您应该检查返回值是否失败。)
保证了一个后推特性。如果在同一流上调用ungetc函数的次数过多,而没有对该流执行中间的读取或文件定位操作,则该操作可能会失败。(§7.21.7.10/第。三)
因此,即使没有输入缓冲区,单个ungetc
也是有效的。