#include<stdio.h>
#include<conio.h>
int main() {
long nc;
nc = 0;
while (getchar()!= EOF){
++nc;
printf("%ld\n", nc);
}
return 0;
}
我的问题是:当我输入数字或字符时,它会增加两次&gt;。 例如:我运行程序,输入1,然后输出
1
2
有人可以告诉我为什么&gt;&lt;原因是不是假设只增加1?并且程序将要显示的nc
的值是1?那么当我输入另一个数字或字符时,它会变为2?
答案 0 :(得分:1)
输入任何数字后,您按 Enter 键
并且'\n' != EOF
所以它运行了两次。
int main() {
long nc;
nc = 0;
while (getchar()!= '\n'){ // check for enter key here.
++nc;
printf("%ld\n", nc);
}
return 0;
}
答案 1 :(得分:1)
输入数字并按Enter
键时,会将另一个\n
字符传递给标准输入缓冲区。 getchar
读取该数字,在缓冲区中留下\ n。在循环的下一次迭代中,getchar在您按下任何字符之前读取\n
,因此在第二次时在内部.Hence值打印两次,因为\n
不存在。
在条件下使用以下,这将解决问题。
while(getchar() != '\n');
这会占用任意数量的\ n。