c - getchar() 和 putchar()

标签 c programming-languages getchar putchar

在例子中:

#include <stdio.h>

main()
{
    long nc;

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

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

最佳答案

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

这只是操作系统的一个巧妙操作,程序员无需担心。只需将您的角色一个一个地投入其中,让操作系统以自己的方式处理其余部分。

关于c - getchar() 和 putchar(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188631/

相关文章:

c++ - 使用更快的 I/O 方法

c - 使用C中的函数进行选择排序时出错

c - 创建列表的问题

c - 防止对 c 中的一个操作进行优化

file - 你如何创建文件格式?

programming-languages - 学习新语言的训练营

c++ - 我需要用左对齐显示 “Monday”,最高的列按降序显示在第一行中

C getchar() 的误解

c - while(scanf) : why does using getchar() keep the input going 输入问题

c++ - sem_wating 线程是否会导致更多切换