令人沮丧 - Ungetc() 无法获取字符

问题描述 投票:0回答:1

我的代码非常简单,但我认为最好弄清楚我的程序中发生了什么。 由于某种原因,我似乎无法让 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);
}
input output getchar ungetc
1个回答
0
投票

您想要推送到输入流。 此外,这些函数在

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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.