Wie kann man ein Array von Zeigern nach char in C sortieren?
Angenommen, ich habe ein Array von Zeigern zum Zeichnen in C:
char *data[5] = { "boda", "cydo", "washington", "dc", "obama" };
Und ich möchte dieses Array mit qsort sortieren:
qsort(data, 5, sizeof(char *), compare_function);
Ich kann die Vergleichsfunktion nicht finden. Aus irgendeinem Grund funktioniert das nicht:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = (const char *)name1;
const char *name2_ = (const char *)name2;
return strcmp(name1_, name2_);
}
Ich habe viel gesucht und festgestellt, dass ich @ verwenden muss**
innerhalb von qsort:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = *(const char **)name1;
const char *name2_ = *(const char **)name2;
return strcmp(name1_, name2_);
}
Und das funktioniert.
Kann jemand die Verwendung von @ erklär*(const char **)name1
in dieser Funktion? Ich verstehe das überhaupt nicht. Warum der Doppelzeiger? Warum hat meine ursprüngliche Funktion nicht funktioniert?
ielen Dank, Boda Cyd