2009-07-26 79 views
0

我正在閱讀着名的書籍「The C programming Language,2nd edition」,並且有一個練習是我堅持的。我無法弄清楚究竟需要做什麼,所以我想要有人向我解釋。The C programming language 2. ed。問題

這是練習5-17:

  • 添加一個字段的搜索功能,因此排序可以在字段進行線內,根據一套獨立的選項排序每個字段。

輸入程序期望從命令行得到什麼; 「獨立選項」是什麼意思?

+0

瞭解問題在哪個環境下被問到,比如周圍的章節是什麼,這可能是有用的。謝謝 – anderstornvig 2009-07-26 21:58:37

+0

本章被稱爲「指針函數」,它解釋瞭如何編寫一個排序程序,它可以按照不同的規則進行排序,並通過函數指針傳遞適當的函數進行比較。 也有像-r這樣的開關用於反轉,-f用於摺疊,-d用於目錄等...... – paleman 2009-07-26 23:08:11

回答

2

研究POSIX sort實用程序,忽略舊版選項。或者學習GNU sort程序;它比POSIX sort還要多。

您需要根據Neil Butterworth在其答案和可變寬度字段中所建議的固定寬度字段來決定。你需要決定什麼字符分隔變寬字段。您需要決定爲每個字段(字符串,大小寫字符串,電話簿字符串,整數,浮點數,日期等)以及排序方向(正向/反向或上升/下降)支持哪些排序模式。

'獨立選項'意味着您可以針對不同領域有不同的排序標準。也就是說,您可以安排字段1按升序排序,字段3按降序整數排序,字段9按升序排序。

請注意,排序時,主要標準是指定的第一個關鍵字段。當比較兩行時,如果兩行中的第一個關鍵字段存在差異,則從不考慮後續關鍵字段。當第一個關鍵字段中的兩行相同時,第二個關鍵字段的標準確定相對順序;那麼,如果第二個關鍵字段相同,則查詢第三個關鍵字段,依此類推。如果沒有指定更多關鍵字段,那麼通常的默認排序標準是「以字符串升序排列的整行輸入」。穩定的排序可以保留原始數據中兩行的相對順序(使用鍵字段標準進行比較時相同)(而不是使用默認的全行比較)。

2

它指的是能夠指定每行中的子字段進行排序。例如:

sort -f1:4a -f20:28d somefile.txt 

將排序的字段開始於字符位置1,並延伸至POSITION4升序和諸如此類中的字段20位開始並延伸到28下降。

當然,還有很多其他方法可以指定字段,排序順序等。設計命令行開關是練習的一個要點,恕我直言。

+0

你的意思是「在那種排序中」究竟是什麼意思? 你可以寫幾行,而不是寫命令行輸入,如下所示: sort -f1:4a -f7:11a somefile。txt – paleman 2009-07-26 23:16:05