設計能讀取檔案內容的程式問題

Home Home
引用 | 編輯 dfgkopeeed
2011-12-05 09:12
樓主
推文 x0
我現在假設我文件檔(檔名01.txt)的內容有38.117.232.0/24    32.112.45.0/24   1.53.48.0/20  這三個,我已經做出能讀取檔 ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 Freelife
2011-12-05 09:48
1樓
  
(1)先用"空白"字元,把3個子字串分離出來。
(2)每一個子字串,再用'/'做切割,就得到你想的結果。

獻花 x0
引用 | 編輯 dfgkopeeed
2011-12-05 10:05
2樓
  
我就是用空白換行的, 不過我現在的問題就是我要用我那個尾數(有24,28......)來分類輸出,我那三個只是其中幾個而已也就是我最後想輸出(以我那三個為例子) 



獻花 x0
引用 | 編輯 ebolaman
2011-12-05 13:05
3樓
  
讀取進來的方法有很多種,第一個要作的是用 char* 陣列來儲存三個 字串

arrS[0] = "38.117.232.0/24"
arrS[1] = "32.112.45.0/24"
arrS[2] = "1.53.48.0/20"

可以用 scanf 用 %s 方式一次讀一串,或是全部讀進來後,用 strtok 依照空白字元 切割



接下來要做分類的動作,作分類的動作之前,必須先得知每個 arrS 斜線後面的數字是多少

也是可以用 strtok 來作切割,再來用 atoi 轉換成數字

或是用 strrchr 來搜尋斜線,同樣動作用 atoi 轉換成數字



接下來分類我提供一個很簡單的方法 :

用另外一個陣列 arrNum[] 來記錄斜線後的數字,對應到同一 Index 的 arrS

只要將 arrNum 來排序,排序過程中任何兩個 Index 的數字 swap 時候,arrS 的字串也要跟著 swap


arrS[0] = "38.117.232.0/24"
arrS[1] = "32.112.45.0/24"
arrS[2] = "1.53.48.0/20"


arrNum[0] = 24
arrNum[1] = 24
arrNum[2] = 20


排序完後資料會像這樣 :

arrS[0] = "1.53.48.0/20"
arrS[1] = "38.117.232.0/24"
arrS[2] = "32.112.45.0/24"


arrNum[0] = 20
arrNum[1] = 24
arrNum[2] = 24


再把 arrS 用迴圈從 0 ~ 2 依序印出即可




這是一個我想出來的幾個簡單的方法,要更有效率可以用 List, Tree 等資料結構來作,但是稍顯複雜

獻花 x0
引用 | 編輯 dfgkopeeed
2011-12-05 18:20
4樓
  
謝謝您的回答,我現在的困境是在我很有很多筆資料(幾千筆),我在想這樣的話要怎麼去做處理

獻花 x0
引用 | 編輯 ebolaman
2011-12-05 23:56
5樓
  
幾千筆的話,可以考慮 動態分配 來儲存資料

在 C 中就是用 malloc, calloc 的語法來動態分配記憶體,雖然執行速度會比 用陣列來的慢

好處是比較沒有長度的顧慮


(進階的作法是用 Array 搭配 動態分配,速度可以提升一點)



1000 多筆資料用 Quick sort 的排序法來排序資料也是很快的

實作一次就大概知道了,我猜應該也是 咻一下就顯示出來了

獻花 x0