回 帖 发 新 帖 刷新版面

主题:[讨论]关于ungetc的程序

#include <stdio.h>;
int main (int argc, char **argv)
{

ungetc ('c', stdin);
ungetc ('b', stdin);
ungetc ('a', stdin);
ungetc ('\n', stdin);

printf ("%c\n", getc(stdin));
printf ("%c\n", getc(stdin));
printf ("%c\n", getc(stdin));
printf ("%c\n", getc(stdin));
printf("%d\n",1);

return 0;
}
以上代码,运行后输出结果为:
c
然后就一直等待,然后敲两次回车,才能够运行完成,哪位能否解释下!

回复列表 (共3个回复)

沙发

[code=c]
#include <stdio.h>
#include <stdlib.h>

int main(int, char **, char **)
{
    ungetc('a', stdin);
    printf("%c", getc(stdin));

    ungetc('b', stdin);
    printf("%c", getc(stdin));

    ungetc('c', stdin);
    printf("%c", getc(stdin));


    return EXIT_SUCCESS;
}

[/code]

不明白为什么很多人都需要“解释”。代码就是最好的“解释”,对比下两段代码的不同。答案自会明白。

板凳

用语言描述的话就是stdin只接受了第一个字符等待处理,后面的ungetc由于前面的流没有被处理因此没有被纳入stdin中……

3 楼


[em28]

我来回复

您尚未登录,请登录后再回复。点此登录或注册