c - 在同一个 C 程序中同时使用 putchar 和 printf ?

标签 c standard-library

我编写了一个小型 C 程序,我想在其中显示与某些按键相对应的 ASCII 数字值。

我的代码如下。问题是,运行程序后,它接受输入,但不执行任何其他操作。它甚至没有到达第一个 printf 语句。我无法弄清楚问题是什么 - 在同一程序中混合 getchar() 函数与 printf() 函数是否存在问题?

#include <stdio.h> 

int main() {

    const int numKeys = 256;

    int keys[numKeys];

    int i;
    for (i = 0; i < numKeys; i++) {

        keys[i] = 0;
    }

    printf("\n Start pressing some keys!\n\n");

    int c;
    while ((c = getchar()) != EOF) {

        printf(" CAPTURED: %d\n", c);

        keys[c]++;
    }

    printf("\n\n ** RESULTS ** \n\n");

    for (i = 0; i < numKeys; i++) {

        if (keys[i] != 0) {

            printf(" Key with value %d was called %d times.", i, keys[i]);
        }
    }
}

我应该澄清一下,我有一台 Windows XP Pro 计算机,安装了 Cygwin。我的开发空间使用Cygwin,所以我想知道在该环境中运行此类程序时是否有什么不同。

最佳答案

我发现了问题。我想你想使用

while ((c = getchar()) != EOF && c != '\n')

相反,如果您想让它在用户按下 Enter/Return 后打印结果。

关于c - 在同一个 C 程序中同时使用 putchar 和 printf ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15516094/

相关文章:

没有 stdio 的 C,有什么可能?

python - 当你有一个名为 max 的变量时使用 Python 的 max 函数?

c - 如何从数组列表的中间删除一个字符?

c - 在 C 中将非空终止字符串传递给 strncmp 是否合法?

c - 有没有办法在 C 中增量处理格式说明符字符串?

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

java - 输入不匹配异常错误

c - C 中整数的大小

c - Eclipse CDT、包含的系统头文件和底层 C 构建之间奇怪的断开连接

c - 如何将多个 c 文件作为 GNU Cflow 的输入?