我在C中编写了一个程序来计算从stdin输入的字符。我想使用一个循环来允许多个条目。 (注意:我是编程新手。)
main()
{
long nc;
int c;
int kc=1;
for (kc=1;kc<=5;kc=kc+1)
{
nc=0;
c= getchar();
while(c != '0')
{
++nc;
c=getchar();
}
printf("%1d\n",nc);
}
return 0;
}
所以基本上你猜测,循环接受5个条目。
问题:当我输入Sky0
时,第一个结果是正确的,但是从那时起,一个被添加到计数中。即输入dame0
结果计为5
,sit0
计算结果为4
等。
在尝试使用prinf在各个阶段调试问题时,我意识到在第一个结果之后代码找到输入的结尾0
,但是进入for循环NEVERTHELESS并等待下一个条目nc
为1
。这导致相应输出中的错误。
请告诉我哪里出错了?为什么即使在感知0
?
非常感谢您的帮助和时间:)
答案 0 :(得分:2)
问题在于当你按下回车键时,它也会成为一个字符(值为0x1a),并且会在while循环之外的getchar
调用中返回。
您可以执行以下操作:
while (getchar() != '\n') nc++;
这样你甚至不需要使用0来标记字符串的结尾。