qsort Problem



  • Hi,

    qsort() in <stdlib.h> will ja eine feste Größe der einzelnen Elemente übergeben haben. Doch wie kann ich dann eine Stringtabelle, in denen Strings unterschiedlicher Größe sind, von qsort() sortieren lassen? Kann mir da mal jemand bitte helfen?

    gruß



  • Die Tabelleneinträge sind doch sicher Zeiger auf die Strings. Daher sind die Tabelleneinträge gleich groß. (sizeof(char*))



  • Vielen dank :)!


  • Mod

    Und jetzt sortier die Strings nicht nach der Größe ihrer Adresse! Dazu ist die Sortierfunktion da, die du angeben kannst.



  • Ich hab ein Problem. Die Sortierung und Suche haut so nicht hin:

    #define ANZ_ELM 5
    
    char *strtbl[ANZ_ELM] = { "C",
    			   "Is a very",
    			   "Powerful",
    			   "Language. And it makes fun!",
    			   "It's also" };
    
    ...
    
    int vergleich_str(const void *wert1, const void *wert2)
    {
    	return strcmp(*(char **)wert1, *(char **)wert2);
    }
    
    ...
    int main(void)
    {
    ....
        qsort(strtbl, ANZ_ELM, sizeof(char *), vergleich_str);
        strptr = (char *)bsearch(muster_str, strtbl, ANZ_ELM, sizeof(char *),   
                      vergleich_str);
    .....
    }
    

    Es kommt zu einem Programmabsturz. Kann mir jemand bitte helfen?


Anmelden zum Antworten