よし、C でかなり長い文字列をいくつか作成する必要がある。
だからもちろん私はそうします、そしてここに彼女はいます:
int string_comparator(const void* el1, const void* el2) {
char* x = (char*) el1;
char* y = (char*) el2;
int str_len = strlen(x);
int i = 0;
for (; i < str_len; i++) {
//when there are non-equal chars
if (x[i] != y[i]) {
break;
}
}
return x[i] - y[i];
}
したがって、もちろん、便利でダンディな string_comparator 関数を次のように C の qsort 関数に渡します。
qsort(list.words, list.num_words, sizeof(char*), string_comparator);
list は、char** (単語) と、それによって保持される単語の数を参照する int (num_words など) を保持する構造体です。
今、私が望んでいたようにリストがアルファベット順にソートされないという問題があります! コンパレーターに一連の printf ステートメントを入れたところ、毎回文字列のガベージ値が出力されたので、それが問題であると確信しています。しかし、なぜそれが問題なのですか?? 以前に qsort を使用したことがあります(単語をソートすることはありません..文字をソートするだけです)。
提案に感謝します!