我想按字母順序排序argv的元素。如何排列C中argv的元素?
下面的代碼行給我的問題:
qsort(argv[optind], argc - optind, sizeof(argv[optind]), sort);
具體而言,最後一個參數是給我麻煩,比較功能,這是如下:
int
sort(const void *a, const void * b)
{
return(strcmp((char*)a, (char*)b));
}
目前,它編譯得很好,但是當我運行它時,我最終得到了分段錯誤。
的運行示例如果我沒有記錯,修改不確定的行爲'argv'陣列結果。你可能會提及誰給了你這個家庭作業,如果你能找到標準中的引文(甚至可以作爲讀者的練習),甚至可以獲得額外的功勞。 – 2010-09-14 12:58:26
是的,好像某些平臺可以從使用有趣的技巧中受益,所以未定義的行爲似乎是合理的。另一方面,手冊頁示例與數組一起玩的事實可能表明了其他情況。或者我們發現自己在手冊頁中有一個錯誤。 :-) – clacke 2010-09-14 13:43:58
實際上,這個賦值不是爲了對argv數組進行排序。基本上,整個程序應計算指定文件的字符數,字數和行數,並按字母順序打印出結果。我的程序目前正確計數一切,但我需要找到一種方法使它按字母順序打印出來,所以我認爲排序argv數組將是一個好主意,因爲那裏的所有文件名都是這樣。 無論如何,經過你們建議的一些調整之後,我可以將它打印到第一個文件和它的計數的位置,但是...繼續低於 – DemonicImpact 2010-09-14 18:00:09