c编程输入字符for循环

c programming enter character for loop

我正在尝试编写一个简单的代码。

我应该使用 getchar 输入 10 个字母,然后打印最小的字母。

例如。 'A' 在 ASCII 中是 65,如果我输入 'A',它应该打印出 'A' 是最小的。

我已经完成了我应该输入字母的第一部分,但我的 for 循环中的某些东西坏了。

这是我的代码:

#include <stdio.h>

int main(void) 
{
    char ch;
    int i;

    for(i=0; i<10; i++) {
        ch = getchar;
        printf("You entered : %c\n", ch);
    }

    return 0;
}

使用该程序我得到了五次:

a
You entered : a
You entered : 

不太清楚你在问什么,我假设你想知道为什么你的程序在似乎是 5 次迭代后停止以及为什么你得到空的额外 You entered:

这是由于 getchar() 的工作方式所致。当您输入一个字符并按 Enter 时,您实际上是在输入类似 a\n 的内容。第一次 getchar 运行时它获取 a ,第二次它获取 n (新行)进行两次迭代。一旦它这样做了,它就会等待你输入更多,因为它已经消耗了所有可用的输入。

您的问题的一个解决方案是在 ch = getchar() 之后使用一个额外的 getchar(),您不会分配给任何东西以消耗额外的换行符。

可以对此进行更多讨论 in this question