作者jeremyhcw ((  ̄ c ̄)y▂ξ)
看板C_and_CPP
标题[问题] 字串处理问题
时间Sat Aug 1 11:13:40 2009
problem:
算一算每行有几个字(word)。
范例输入:
Hello everybody!!
This is school principal speeking.
范例输出 :
2
5
我的程式
#include <stdio.h>
#include <stdlib.h>
int main()
{ char c[50];
int i,h;
while(scanf("%s",&c)!=EOF)
{i=0,h=0;
while(c[i]!='\0')
{
if(c[i]==32) {h++;}
i++;
}
printf("%d",h+1);
}
system("PAUSE");
return 0;
}
结果如果是2 他会输出 11
如果字数是5 输出11111 怎会这样 如果我把32改成'+'来取代空白就没问题了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.193.78.189
1F:推 grayyoung:这个排版真的相当痛苦 = = 08/01 11:27
2F:推 legnaleurc:你不该用 &c 的, c是个阵列 08/01 11:29
3F:→ jeremyhcw:抱歉我改成 c 之後 还是没变 08/01 11:30
4F:推 legnaleurc:你每扫到一个字就印一次,就会变这样啊= = 08/01 11:32
5F:→ legnaleurc:而且不用这麽麻烦吧 08/01 11:32
6F:推 QQ29:while(scanf("%s",&c)!=EOF) 这行要改掉 逻辑问题 08/01 11:34
7F:推 grayyoung: if(c[i]==32) 也需要修改吧 08/01 11:37
8F:推 QQ29:scanf 把你输入的str1 str2分两次处理 所以根本不会有' '32 08/01 11:38
9F:→ QQ29:的字元出现 第一次跑就是"str1\0" 所以她是印 0+1=1 08/01 11:38
10F:→ can15air:最近刚好看到 -> strtok()这个函数,我想应该能处理这个뀠 08/02 14:33
11F:→ can15air:问题.我是在课本上看到是包含在<string.h> 08/02 14:34