String Array mit qsort sortieren



  • Das for(int i = 0;i<255;i++) ist für Strings schon mal großer Mist, da ein String ja auch mal weniger Zeichen enthalten kann.

    Du musst doch nur wenn strcasecmp 0 zurückliefert und strcmp != 0 vom Ergebnis von strcmp das Vorzeichen ändern.

    if ( !(result = strcasecmp(string1,string2)))  /* Es sind die gleichen Woerter) */
      result = -strcmp(string1,stringg2);   /* Bei 0 sind sie gleich, sonst willst du das umgekehrte Verhalten */
    


  • Ja aber es ist halt die maximale Länge, also sehe ich da kein Problem oder?

    Grundsätzlich funktioniert das sortieren ja, nur dass er mir nur den ersten char nach Groß- und Kleinschreibung sortiert (also klein vor groß), aber warum ist die Frage? Ich vergleiche ja eh die kompletten Strings...

    MFG



  • Zoltamor schrieb:

    Ja aber es ist halt die maximale Länge, also sehe ich da kein Problem oder?

    Sehr schlechte Einstellung.

    Strings enden beim Stringendezeichen '\0' und nicht nach 254 Zeichen wie bei dir.

    Einmal richtig programmiert und du kannst es immer wieder ohne Änderung verwenden.

    Zudem vergleichst du ja jedes Zeichen einzeln mit einer Stringfunktion.

    Das macht man eigentlich direkt mit den Zeichen:

    result = (int)*(string1+i)-(int)*(string2+i); // Der * ist kein mal sondern das Dereferenzierungszeichen
    

Anmelden zum Antworten