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!
-
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.