首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getchar()和putchar()

getchar()和putchar()
EN

Stack Overflow用户
提问于 2010-02-03 07:46:19
回答 4查看 4.6K关注 0票数 6

在示例中:

代码语言:javascript
复制
#include <stdio.h>

main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

我不太明白。putchar()会输出字符,但是为什么在EOF之后,它会输出所有字符,并且它在哪里记住了所有这些字符?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-03 07:56:34

它被称为buffering,它是由操作系统完成的。通常,它会进行行缓冲,将您输入的每个字符都保存在内存中,然后在遇到换行符时将其全部写入文件。这节省了资源,因为文件操作比其他操作花费更多的时间。因此,它不是对每个字符都进行输出,而是等待一堆字符在缓冲区中收集,并一次性将它们全部写出。

这只是操作系统做的一个聪明的操作,你,程序员,不需要担心。只需一个接一个地抛出你的角色,让操作系统以自己的方式处理剩下的事情。

票数 8
EN

Stack Overflow用户

发布于 2010-02-03 11:18:48

这不是一个答案,但是你不能把代码放在评论里

我想你的意思是这样的:

代码语言:javascript
复制
#include <stdio.h>

main()
{
    long nc;
    nc = 0;
    char c;
    while ((c = getchar()) != EOF)
    {
       putchar(c); /* prints one char */
        ++nc;
    }
    printf("%ld\n", nc); /* prints the number of characters read */
}
票数 2
EN

Stack Overflow用户

发布于 2010-02-03 07:53:09

没有任何地方,这段代码只清空输入,并写入在刷新之前还剩下多少个字符。

这是为了确保输入文件(stdin)中没有剩余的字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2188631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档