我的代码非常简单,但我认为最好弄清楚我的程序中发生了什么。 由于某种原因,我似乎无法让 ungetc() 正常工作,也无法弄清楚它的用途。 通常,ungetc() 应该将一个字符返回到流中,或者至少我认为应该这样做。 例如,如果我输入 ABC,通过 getchar() 获取三个字符,我希望 ungetc() 返回 getchar() 返回的字母之一。 如果我输入 putchar(),我会期望 B 返回,因为 C 被扔回到流中,但是可惜 C 被返回了。 我尝试过 getchar() 和 getc() 并遇到了同样的问题。
精简版本,我在程序中输入“ABC”,期望 ungetc() 导致 putc() 返回“B”,但我得到的又是 C。 为什么会出现这种情况?
enter code here
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char c;
c=getchar();
c=getchar();
c=getchar();
ungetc(c, stdout);
putchar(c);
}
您想要推送到输入流。 此外,这些函数在
int
上运行,而不是 char
:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
int c;
c=getchar();
c=getchar();
c=getchar();
ungetc(c, stdin);
putchar(c);
}
和示例运行:
ABC
C