[問題] 字串處理問題

看板C_and_CPP作者 ((  ̄ c ̄)y▂ξ)時間15年前 (2009/08/01 11:13), 編輯推噓7(705)
留言12則, 5人參與, 最新討論串1/4 (看更多)
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

08/01 11:27, , 1F
這個排版真的相當痛苦 = =
08/01 11:27, 1F

08/01 11:29, , 2F
你不該用 &c 的, c是個陣列
08/01 11:29, 2F

08/01 11:30, , 3F
抱歉我改成 c 之後 還是沒變
08/01 11:30, 3F

08/01 11:32, , 4F
你每掃到一個字就印一次,就會變這樣啊= =
08/01 11:32, 4F

08/01 11:32, , 5F
而且不用這麼麻煩吧
08/01 11:32, 5F

08/01 11:34, , 6F
while(scanf("%s",&c)!=EOF) 這行要改掉 邏輯問題
08/01 11:34, 6F

08/01 11:37, , 7F
if(c[i]==32) 也需要修改吧
08/01 11:37, 7F

08/01 11:38, , 8F
scanf 把你輸入的str1 str2分兩次處理 所以根本不會有' '32
08/01 11:38, 8F

08/01 11:38, , 9F
的字元出現 第一次跑就是"str1\0" 所以她是印 0+1=1
08/01 11:38, 9F

08/02 14:33, , 10F
最近剛好看到 -> strtok()這個函數,我想應該能處理這個뀠
08/02 14:33, 10F

08/02 14:34, , 11F
問題.我是在課本上看到是包含在<string.h>
08/02 14:34, 11F

08/02 14:37, , 12F
文章代碼(AID): #1ASxBbL6 (C_and_CPP)
文章代碼(AID): #1ASxBbL6 (C_and_CPP)