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。
我正在尝试编写一个简单的代码。
我应该使用 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。