大佬帮忙给看看,在线OJ题 ///////////

题目内容:
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。

输入格式:
输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。

输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:
It's great to see you here.

输出样例:
4 5 2 3 3 4
时间限制:500ms内存限制:32000kb

一下是我写的代码,大佬帮忙看看。。。。。。——————————————————————————
#include

int main()
{
char ch; int n;
scanf("%c",&ch);
while (ch != '.'){
while (ch==' ')
{
scanf("%c", &ch);
}
n = 0;
while (ch!=' '&& ch!='.')
{
n += 1; scanf("%c", &ch);
}
printf("%d ",n);
}
return 0;
}


首先计算没有错误。
图片说明
错误出现在输出要求,行末没有最后的空格。
从图中可以看出来最后多输出了一个空格,预期应该是4空格4t

#include
int main()
{
string s;
while(cin>>s)
{
printf("%d",s.length());
}
return 0;
}
貌似这样就行了?

帮忙看一下,谢谢大佬们。。。

图片说明

csn 博客 程序设计入门——C语言 习题汇总

最后多了一个空格,这个例子中最后有换行符
#include
int main()
{ int i=0;
char a;
while(1){
scanf("%c",&a);
if(a == '.'){
if(i!=0){
printf("%d",i);
}
printf("\n");
break;
}
if(a==' '){
if(i!=0){
printf("%d ",i);
i=0;
}
}
else{
i+=1;
}
}
return 0;
}