gpt4 book ai didi

c++ - 当我将 stdin 和 ungetc 的缓冲区关闭到 stdin 时发生了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:37 27 4
gpt4 key购买 nike

我在看一本关于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 可能会失败。 (你应该检查失败的返回值。)

One character of pushback is guaranteed. If the ungetc function is called too many times on the same stream without an intervening read or file positioning operation on that stream, the operation may fail. (§7.21.7.10/para. 3)

因此即使没有输入缓冲区,单个 ungetc 也是有效的。

关于c++ - 当我将 stdin 和 ungetc 的缓冲区关闭到 stdin 时发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33218239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com