
#include <stdio.h>
int main(void)
{
char s[100];
int i, n = 0;
scanf("%s", s);
for (i = 0;;i++)
{
if (s[i] != ' ' && s[i] != '.')
n++;
else{
printf("%d", n);
n = 0;
if (s[i] != '.')
printf(" ");
else
break;
}
}
return 0;
}

uj5u.com熱心網友回復:
供參考:#include <stdio.h>
int main(void)
{
char s[100];
int i, n = 0;
//scanf("%s", s);//scanf()遇到空格,輸入結束。
gets(s);
for (i = 0;;i++)
{
if (s[i] != ' ' && s[i] != '.')
n++;
else{
printf("%d", n);
n = 0;
if (s[i] != '.')
printf(" ");
else
break;
}
}
return 0;
}
//it's great to see you here.
//4 5 2 3 3 4請按任意鍵繼續. . .
uj5u.com熱心網友回復:
scanf遇到空格是會退出的,這樣就導致for的時候查找不到 '.'和' ' 軟體就在無限回圈了。可作如下修改:
#include <stdio.h>
int main(void)
{
char s[100];
int i, n = 0;
//scanf("%s", s);
scanf("%[^.]", s); // 檢測遇到 '.' 后退出。
for (i = 0;;i++)
{
if (s[i] != ' ' && s[i] != NULL)
n++;
else{
printf("%d", n);
n = 0;
if (s[i] != NULL)
printf(" ");
else
break;
}
}
return 0;
}
uj5u.com熱心網友回復:
錯誤1:char s[100];沒有初始化'\0',所以里面存盤的是個什么玩意誰也不知道錯誤2:scanf("%s", s);遇到空格就結束,所以你的hi xyz.只能讀到hi,而xyz.還在快取當中
錯誤3:for (i = 0;;i++)你這段只能隨機結束,你退出的地方是s[i]!=' '和'.',實際上由于錯誤1,里面存盤的到底是什么不知道,你認為的退出的地方實際有很大問題。
不直接提供答案,可以思考一下這些地方

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285267.html
標籤:新手樂園
上一篇:面向物件的輸出結果分析