[問題] C code 做文章字串的排序及計算

看板C_and_CPP (C/C++)作者 (Qoo)時間16年前 (2009/09/13 10:10), 編輯推噓3(3011)
留言14則, 3人參與, 最新討論串1/1
我的問題是這樣的 若一txt檔內容如下: It is good day. Ptt is a nice place. 那麼我希望開檔後可以做到字母的排序也就是說如下 It Ptt a day. good is is nice place. 這一步我用比較笨的方式去做到了 但我想要做到若有同樣字則顯示一次就好,所以可在後面註明有出現幾次 也就是若如上題結果應為: It 1 Ptt 1 a 1 day. 1 good 1 is 2 nice 1 place. 1 我曾想過用副程式去做重複比對 但總是寫到整個錯亂掉 所以想請問板上寫C code的大哥大姐們,是否有什麼辦法可以解決 還是有什麼函數可以解決,我只會寫C,所以希望是C的解法~C++我可能會看不懂 Code新手在此向大家請教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.126.215

09/13 10:23, , 1F
看不出來排序的規則,是不是換行就好?
09/13 10:23, 1F

09/13 10:25, , 2F
使用fscanf(fp,"%s",stemp);可以一行一行讀字串
09/13 10:25, 2F

09/13 10:25, , 3F
fp是檔案指標FILE* stemp是char[30]的陣列
09/13 10:25, 3F

09/13 10:26, , 4F
讀進來之後依序用一個陣列存起來 sbox[100][30]
09/13 10:26, 4F

09/13 10:27, , 5F
然後新讀進來的都要跟之前的比對 sbox[i] i=0~now
09/13 10:27, 5F

09/13 10:27, , 6F
now表示目前存了幾個不同的字串
09/13 10:27, 6F

09/13 10:27, , 7F
比對相同的話要做紀錄 sboxcount[k]++
09/13 10:27, 7F

09/13 10:28, , 8F
不同的話就新增一個 sbox[now+1] = stemp
09/13 10:28, 8F

09/13 10:29, , 9F
但字串不是像這樣直接用 = 就可以複製過去的 需要用函式
09/13 10:29, 9F

09/13 10:30, , 10F
字串函式就去找看看吧 我也沒背下來
09/13 10:30, 10F
我目前排序是照字母排,也就是先大寫A~Z在小寫a~z 您所說的比對方式我還在想怎麼處理!!!因為目前還看不太懂~(但好像有feel了) 但我可以請問一下~你說讀進來後要怎麼比對!? 是指stemp[](目前讀進來的)跟sbox[a][](之前讀進的) 然後從stemp[1]~EOF 分別跟sbox[每個][1]~EOF比嗎 謝謝 ※ 編輯: Qoooooo 來自: 123.204.126.215 (09/13 10:45)

09/13 11:09, , 11F
string有比對的函式 請愛用~
09/13 11:09, 11F

09/13 11:12, , 12F
你應該沒有寫虛擬碼的習慣 flow畫出來就知道怎麼寫了
09/13 11:12, 12F

09/14 15:22, , 13F
排完序, loop 整個 list, 如果跟前一個一樣就表示重覆了
09/14 15:22, 13F

09/14 15:23, , 14F
再對重覆的 item 作處理
09/14 15:23, 14F
文章代碼(AID): #1Ah5H_hi (C_and_CPP)
文章代碼(AID): #1Ah5H_hi (C_and_CPP)