我正在尝试编写一个简单的代码。
我应该使用 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 次迭代后停止以及为什么您得到空的额外您输入:
.
这是由于 getchar()
的工作方式造成的。当您输入字符并按 Enter 键时,您实际上是在输入类似 a\n
的内容。第一次 getchar
运行时,它会抓取 a
,第二次运行时,它会抓取 n
(新行),需要两次迭代。一旦完成此操作,它就会等待您输入更多内容,因为它消耗了可用的全部输入。
解决您的问题的一个解决方案是在 ch = getchar()
之后使用额外的 getchar()
,您不会将其分配给任何内容以消耗额外的内容换行符。
有关此问题的更多讨论可 in this question .
关于c 编程 for 循环输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333031/