クラス プロジェクトでは、文字列の配列を並べ替えます。各文字列には、次のように同じ数の列が含まれます。
カートライト ウェンディ 93 ウィリアムソン マーク 81 トンプソンマーク100 アンダーソン・ジョン 76 ターナー・デニス 56
プログラムは、ソートする列のコマンドライン引数を受け入れ、ソートされた文字列を変更せずに出力する必要があります。
strtok を使用して各文字列のコピーを列に分割し、次のように各行の構造体を作成したいと思います。
struct line {
char * line;
char column_to_sort_on[MAX_COLUMN];
}
私の問題は、qsort が引数として受け取る比較関数ポインターにあります。私の理解が正しければ、比較関数は、ソートされる項目への 2 つの const void ポインターを取り、int を返す必要があります。これは、構造体へのポインターを比較関数に渡すことができないことを意味します。これは、qsort がソートするものではないためです。比較関数に並べ替える列番号を渡すことはできません。これは、2 つの引数しか使用できないためです。特定の列に基づいてこれらの文字列をソートするには、どうすればこれを回避できますか?
編集:本当に必要な場合、並べ替えはqsortまたは自分のものに限定されます。選択肢を与えてください、私はqsortを選びます。:)
編集#2:コンセンサスは、列番号にグローバル変数を使用するか、単にqsortを使用して構造体の配列をソートしているようです。構造体を並べ替えて、それらのポインターを使用して元の文字列を出力することは考えていませんでした。それが私がすることだと思います。助けてくれてありがとう!