作者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