我编写了一个小型 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/