c - getchar() 函数绕过一个循环

标签 c

我有这个程序,我希望它在我每次输入一个字符时递增 1 并打印我的计数器的值

#include <stdio.h>

    int main(void){

        //Declarations
        long nc;

        //Instantiations
        nc = 0;

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

        return 0;
    }

当循环启动时,如果我按 ENTER,我得到 1,2,3,4,5... 这没问题。但是如果我输入一个字符或其他东西,它会打印接下来的两个数字 12,34,56, 78.为什么会这样??

我在 gcc 4.6.3 Ubuntu 12.04 版本上运行该程序。

最佳答案

终端输入一般是line buffered .当您按 ENTER 时,您的程序只会获取要处理的输入。如果您键入多个字符,您将针对您输入的每个字符(加上换行符本身)获得一行输出,因为 getchar() 按顺序返回每个字符。

关于c - getchar() 函数绕过一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846969/

相关文章:

c++ - CMake:创建二进制 foo + 库 libfoo?

尽管有返回值,但控制仍到达非 void 末尾

c - 使用二维数组的格雷码 (C)

c - 如何将基于列表的文件复制到同样基于列表创建的相应文件夹中?

c - 将字符串分配给 char 数组时类型不兼容

c - C 中的 GeoIP_new API 可能存在内存泄漏

c - 调试利用内存并在其中释放的宏?

c# - 为什么驱动程序开发使用 C 而不是 C#?

c - 使用 ZeroMQ 和 ProtocolBuffers 发送结构

c - 如何使用 fscanf 在 C 中扫描文件