strcmp für stringtabelle geht nicht :(



  • Heyo,

    ich versuche gerade eine Stringtabelle alphabetisch sortieren zu lassen.

    Ich weiß nicht, wo mein Fehler steckt... die Worte werden einfach in der Reihenfolge ausgegeben, in der sie schon vorher waren.
    Ich habe es schon mehrfach mit dem Beispiel verglichen, aber ich sehe irgendwie keinen Unterschied.

    //14.19.1 ptrptr4
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(void) {
        char *str[]={"zug","buch","Chris"};
    
        int i,j;
        char *tmp;
    
        for (i=0;i<3;i++){
            for (j=0;j<3;j++){
                if ( (strcmp(str[i],str[j]) >0) ) {
                   tmp=str[i];
                   str[i]=str[j];
                   str[j]=tmp;
                }
            }
        }
    
        for (i=0;i<3;i++){
            printf("%s\n",str[i]);
        }
    
        getchar();
        return 0;
    }
    

    Greez

    Haimi



  • Anstatt nur das Endresultat des Programms zu überprüfen, solltest du einfach mal mit dem Debugger schrittweise durchgehen, dann findest du den Fehler sicher schnell..



  • Haimi schrieb:

    Ich weiß nicht, wo mein Fehler steckt... die Worte werden einfach in der Reihenfolge ausgegeben, in der sie schon vorher waren.

    Hoya!
    Das lieg einfach daran, das die Elemente des Arrays gemäß der if-Abfrage bereits in sortierter Reihenfolge sind.
    Mach aus dem '<' in der if-Abfrage ein '>', dann wird die Reihenfolge umgedreht.

    Gru-huß,
    B.B.



  • ahhhh 🙂

    boah das habe ich echt geschickt übersehen!

    Ich danke euch,

    if Abfrage muss lauten if (j=i+1;j<3;j++)

    Gracias!! 🙂


Anmelden zum Antworten