私は文字列の配列を持っています。残念ながら、文字列配列内の各文字列のサイズは一定ではないため、これを行うことはできません。
qsort(fileList, noOfFiles, sizeof(*fileList), compare);
カスタム比較関数を作成します。代替案は何ですか?
fileList はファイル名のリストです。次のように宣言されています。char **fileList;
私がこれを行うことができない理由は、coz qsort がブラインド関数のようなものだからです。次の要素を見つけるために、前述の (3 番目の引数) メモリ ユニットをスキップするだけです。やみくもに。可変長文字列を使用すると、ランダムな動作になります。qsort で文字列の開始と終了のメモリ位置を特定する方法がないためです。
qsort は char *array[100] に使用できます。
多くの人から要求されたバグのあるコードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *string1, const void *string2){
char *a = (char*)(string1);
char *b = (char*)(string2);
printf("comparing %s AND %s\n", a, b);
return strcasecmp(a,b);
}
void sortListName(char **fileList, int noOfFiles){
printf("Sorting\n");
qsort(fileList, noOfFiles, sizeof(char*), compare);
return;
}