Teilstring von Zeichenkette lösche & alle Leerzeichen am Anfang und Ende löschen
-
Hallo,
wie man gleich feststellen darf bin ich Neuling in ANSI-C
Ich möchte 2 sachen mit einer Zeichenkette machen.
A: Ich möchte den folgenden Teilstring aus dem String entfernen "\n\r"
Beispiel:
Vorgabe: " Das ist ein Beispiel \n\r"
Ergebnis: " Das ist ein Beispiel "B: Ich möchte alle " " Leerzeichen am Anfang und am Ende entfernen
Vorgabe: " Das ist ein Beispiel "
Ergebnis: "Das ist ein Beispiel"Hat jemand zufälligerweise ein beispielcode?
Vielen Dank und noch einen Schönen Tag
-
Kuck dir in der MSDN mal die String Manipulation Routines an.
Das ganze dann mit ein paar if abfragen verfeinern, und die Sache sollte hinhaun.
-
Ja diese befehle habe ich auch schon gefunden, leider komm ich damit noch nicht so ganz klar wie ich zeichen von links bzw von rechts abschneiden kann.
Hat jemend wenst so ein beispiel
Vielen Dank
-
Hab mal schnell was zusammengeschludert (bedarf sicher weiterer Betrachtung
):
void TrimSpaces(char *str,int len) { char *tmpStr=calloc(len+1,sizeof(char)); char *p=str; char *start; while(*p==32) ++p; start=p; p=&str[len-1]; while(*p==32) --p; ++p; strncpy(tmpStr,start,p-start); memset(str,0,len); strncpy(str,tmpStr,p-start); } int main(){ char str[]=" test rgne "; TrimSpaces(str,strlen(str)); }
Nur für die Leerzeichen...
-
_matze schrieb:
bedarf sicher weiterer Betrachtung
da fehlt ein 'free' und
sizeof(char)
kannste dir schenken.
-
+fricky schrieb:
da fehlt ein 'free'
Oh je, jetzt isses mir auch mal passiert...
-
_matze schrieb:
+fricky schrieb:
da fehlt ein 'free'
Oh je, jetzt isses mir auch mal passiert...
das kommt davon, wenn man malloc usw. benutzt, obwohl man's nicht garnicht braucht.
-
+fricky schrieb:
das kommt davon, wenn man malloc usw. benutzt, obwohl man's nicht garnicht braucht.
Ja ja, is ja gut!
Ich hab ja gesagt, dass ich's in 5 Minuten zusammengeschustert hab, da war mein Hirn kaum im Spiel. Sollte ja auch nicht die ultimative Lösung sein, sondern nur eine, die eine Basis zum weiter drüber Nachdenken bietet...
Du würdest eher im String nachrücken?
-
_matze schrieb:
Du würdest eher im String nachrücken?
klar, so etwa:
void trim (char *in) { char *p = in; char *q = in; // trim left while (*in) { if (p != q || *in != ' ') *p++ = *in; in++; } // trim right while (*--p == ' '); *++p = 0; }
^^ebenfalls ungetestet