注册 登录
编程论坛 VC++/MFC

求问这条语句有什么用,没看明白

流沙河技术员 发布于 2016-01-17 11:22, 3051 次点击
要求是编写一个程序,接收用户从键盘输入的字符,当用户按下回车键时表示确认输入,统计用户输入了多少个字符(不含回车符)
#include<stdio.h>
void main()
{
    char c;
    int i=0;
    printf("请输入字符串(以回车确认):\n");
    c=getchar();
    for(i=0;c!='\n';i++)
    {c=getchar();}
    printf("字符串共%d个字符!",i);
}
我如果加上带下划线的这个语句,是正确的,如果去掉,那么回车字符就会被算上。我想请问各位前辈,这是为什么。谢谢
1 回复
#2
天使梦魔2016-01-17 11:46
大哥,执行循序啊~~~这么简单的有必要纠结么。


你循环外面的getchar();实际上等于你输入的第一个字符。而第二个字符开始才是循环内的i++,一直到循环结束把最后一个回车算上然后填补你第一个没有算的回车字符

你看下for循环的中断条件c!='\n',就是说C这个字符获取的是回车的时候退出,问题是你循环体内才开始获取字符,i早自加了。
中断条件和获取都不在一个顺序上。
最起码也是这样吧:for(i=0;c!='\n';c=getchar())i++;
1