2012-11-27 42 views
-1

我有一個命令sort -n +1 -2 -o /tmp/ord_id在我打電話使用系統,這是非常糟糕的C文件。我將如何創建一個快速排序函數來完成與unix命令相同的任務?下面是一個命令是如何調用:將Unix排序命令轉換成Quicksort

static const char sortcmd[] = "sort -n +1 -2 -o /tmp/ord_id "; //dec during function 
//later in the function 
bu_vls_strcpy(&cmd, sortcmd); //ONLY NEED TO FIX THIS COMMAND 
bu_vls_strcat(&cmd, argv[1]); 
bu_vls_printf(&gedp->ged_result_str, "%V\n", &cmd); 
(void)system(bu_vls_addr(&cmd)); 

bu_vls函數是預定義的程序,所以認爲他們像平常字符串函數。我評論的顯示的呼叫號碼,任何提示或代碼行認識(這不是一個家庭作業,獨立的項目!)

回答

2

有幾個步驟:

  1. 讀取文件中(假設是argv[1]
  2. (可選)解析它以查找+1 -2使用與排序相同的規則選擇的字段。
  3. 編寫一個排序謂詞來實現對數字進行排序(來自-n)參數的排序。這可以在整行上運行(如果跳過了第2步),也可以在您創建的表示解析行的結構上運行。
  4. 致電qsort
  5. 按排序順序寫入數據。
+0

是qsort預定義函數嗎?如果是的話,它是否適用於cstdlib? –

+0

@ Need4Sleep:是:http://linux.die.net/man/3/qsort –

+0

我將如何寫入指定的文件?我需要創建一個FILE對象,並在與argv [1]排序後寫入對象? –