我正在尝试编写一个简单的代码。
我应该使用Array.Copy
输入10个字母,然后打印最小的字母。
实施例。 ASCII中的'A'是65,如果我输入'A',它应打印'A'最小。
我已经完成了第一部分,我应该输入字母,而我的for循环中的某些东西正在破碎。
这是我的代码:
getchar
使用该程序我得到了五次:
#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;
}
答案 0 :(得分:0)
目前还不清楚你在问什么,我假设你想知道为什么你的程序在看似5次迭代之后就停止了,为什么你得到空的额外You entered:
。
这是由于getchar()
的工作方式。当您输入字符并按Enter键时,您实际上正在输入a\n
之类的内容。第一次getchar
运行时它会抓取a
,第二次抓取n
(换行)进行两次迭代。一旦它执行此操作,它会等待您输入更多信息,因为它消耗了它可用的整个输入。
针对您的问题的一个解决方案是在getchar()
之后使用额外的ch = getchar()
,但是为了消耗额外的换行符,您不会将其分配给任何内容。
有关此问题的更多讨论in this question。