Wortreihenfolge in einem String ändern?



  • Hallo, ich solleine Funktion realisieren die Wörter in Strings vertauscht aber nicht die einzelne Buchstaben.

    Beispiel: "Dies ist ein Beispiel" soll zu "Beispiel ein ist Dies" werden.

    Nun bin ich total ratlos wie das umzusetzten ist...
    Bitte um Hilfe!


  • Mod

    donpron schrieb:

    Nun bin ich total ratlos wie das umzusetzten ist...
    Bitte um Hilfe!

    Wo brauchst du denn Hilfe? Sind dir die Stringfunktionen derStandardbibliothek nicht bekannt? Oder fällt dir kein Algorithmus ein?



  • Du musst halt von hinten durch den String iterieren, immer wenn du auf ein Whitespace-Character (Leerzeichen, Tab, ...) triffst kopierst d,u von der aktuellen Position bis zur letzten Leseposition (also jeweils die Wortenden), den Teilstring in deinen Zielpuffer.



  • void ersetzeWort(char *s,const char *s1,const char *s2)
    {
        s=strstr(s,s1);
        memmove(s+strlen(s2),s+strlen(s1),strlen(s+strlen(s1))+1);
        strncpy(s,s2,strlen(s2));
    }
    
    void tauscheWoerter(char *s,const char *s1,const char *s2)
    {
        if( strstr(s,s1) && strstr(s,s2) )
        {
            if(strlen(s2)<strlen(s1))
                ersetzeWort(s,s1,s2),ersetzeWort(s,s2,s1);
            else
                ersetzeWort(s,s2,s1),ersetzeWort(s,s1,s2);
        }
    }
    

    Hier mal eine Lösung, wenn du sie verstehen willst, musst du schon etwas Arbeit investieren und lernst noch etwas dabei.


Anmelden zum Antworten