Problem mit Strings

seriously

Mitglied
Hallo Leute
Zuerst will ich mich Mal bedanken für dieses wunderbares Forum hier !

Ich habe hier verschiedene Funktionen mit Strings zu machen .
Aber wenn ich die erste Funktion verstehe wie sie funktioniert und so, dann kann ich ( glaube ich) die alleine schaffen .

Die Funktion:
*) Funktion /Str_RTrimChars/
// Hier ist eine Schnittstellendokumentation:
//
// Die Funktion /Str_RTrimChars/ entfernt alle trailing
// Zeichen /ch/ der Zeichenkette /s/.
//
// Funktionsergebnis: keines
//
// Bsp.: char test[] = "*** Rudi Ratvoll ***";
// Str_RTrimChars (test, '*');
// printf ("\"%s\"", test);
// // Ausgabe: "***Rudi Ratvoll "

Wie mache ich das ?
Der Lehrer sagte mit einer While Schleife !
 
Zuletzt bearbeitet:
Definiere die Funktion mit den geforderten beiden Parametern und schreibe innerhalb eine while-Schleife, die zeichenweise vom String-Ende zum Anfang läuft. Dann frage wieder nach.
 
Hallo,

du könntest den String Zeichen für Zeichen durchlaufen und dabei die Position des zuletzt gesehenen Zeichens merken, welches nicht dem zu entfernenden Zeichen entspricht. Am Schluss setzt du nach dieser Position einfach das Terminierungszeichen '\0'. In etwa so (ungetestet):
C:
char *mark = s - 1;
while (*s) {
  if (*s != ch) mark = s;
  ++s;
}
*(mark + 1) = '\0';

Grüße,
Matthias
 
danke für die Antworten
hab hier von meinem Freund was bekommen und hab eine Frage dazu:

int i=0;

Code:
  while (s[i] != '\0')
        i++;

        while (i-1>=0 && s[i-1] == ch) {
        s[i-1]='\0';
        i--;
        }

wieso steht in der zweiten Bedingung (i-1>=0) ****************?
 
Weil die Schleife vom Stringende aus maximal bis zum Stringanfang laufen soll, nicht darüber hinaus weiter.

Du greifst von der Position i aus immer auf den vorhergehenden Buchstaben zu (also "i-1"), dann zählst du i erst runter.

Und weil du immer "i-1" verwendest und 0 der vorderste Index ist, bei dem dann spätestens gestoppt werden soll, muss i-1 größer oder gleich 0 sein.
(i-1)>=0

i>0
würde übrigens den gleichen Effekt haben.

Gruß
 
Zurück