当我读一本关于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;
}
答案 0 :(得分:1)
无论缓冲区设置如何,ungetc
必须始终能够将一个字符推回输入流。如果您尝试推送多个字符,ungetc
可能会失败。 (您应该检查失败的返回值。)
保证了后退的一个特征。如果在同一个流上调用ungetc函数太多次而没有对该流进行插入读取或文件定位操作,则操作可能会失败。 (§7.21.7.10/第3段)
即使没有输入缓冲区,单个ungetc
也是有效的。