看板 C_and_CPP 關於我們 聯絡資訊
我的問題是這樣的 若一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
pizza0117:看不出來排序的規則,是不是換行就好? 09/13 10:23
pizza0117:使用fscanf(fp,"%s",stemp);可以一行一行讀字串 09/13 10:25
pizza0117:fp是檔案指標FILE* stemp是char[30]的陣列 09/13 10:25
pizza0117:讀進來之後依序用一個陣列存起來 sbox[100][30] 09/13 10:26
pizza0117:然後新讀進來的都要跟之前的比對 sbox[i] i=0~now 09/13 10:27
pizza0117:now表示目前存了幾個不同的字串 09/13 10:27
pizza0117:比對相同的話要做紀錄 sboxcount[k]++ 09/13 10:27
pizza0117:不同的話就新增一個 sbox[now+1] = stemp 09/13 10:28
pizza0117:但字串不是像這樣直接用 = 就可以複製過去的 需要用函式 09/13 10:29
pizza0117:字串函式就去找看看吧 我也沒背下來 09/13 10:30
我目前排序是照字母排,也就是先大寫A~Z在小寫a~z 您所說的比對方式我還在想怎麼處理!!!因為目前還看不太懂~(但好像有feel了) 但我可以請問一下~你說讀進來後要怎麼比對!? 是指stemp[](目前讀進來的)跟sbox[a][](之前讀進的) 然後從stemp[1]~EOF 分別跟sbox[每個][1]~EOF比嗎 謝謝 ※ 編輯: Qoooooo 來自: 123.204.126.215 (09/13 10:45)
cspy:string有比對的函式 請愛用~ 09/13 11:09
cspy:你應該沒有寫虛擬碼的習慣 flow畫出來就知道怎麼寫了 09/13 11:12
ledia:排完序, loop 整個 list, 如果跟前一個一樣就表示重覆了 09/14 15:22
ledia:再對重覆的 item 作處理 09/14 15:23