Hallo, gibt es in C eine fertige Funktion führende Leerzeichen aus einem String zu entfernen?
Nein. Ist aber gar nicht so schwer zu programmieren. Das Prinzip: Das erste Nicht-Leerzeichen Zeichen im String suchen. Danach alle Zeichen dahinter in einer Schleife nach vorne kopieren.
Danke. Das mit dem selbst Programmieren ist auch nicht das Problem. Ich wollte nur nicht das Rat neu erfinden wenn es in irgend einer AVR-lib schon drin ist ;o)
Nö, ist so nicht da. Meist genügt es ja, sich mit einem Pointer vorzuarbeiten und den Anfang des Strings einfach zu ignorieren. Damit entfällt dann sogar noch der Schritt des Kopierens.
Yep. Das Hauptproblem warum man solche Dinge nicht in die Library mit aufnimmt liegt wohl darin, dass jeder eine andere Vorstellung davon hat, was den als Leerzeichen gewertet wird. Ist das nur das eigentliche Leerzeichen oder gehört der Tabulator auch dazu. Was ist mit einem Zeilenvorschub am Beginn? Soll der ignoriert werden oder nicht?
Dafür gibt es ja in C den netten Begriff "whitespace" ... und das Macro/die Funktion isspace.
Zuerst dachte ich ja dieser Thread wäre sinnlos da ich das nein zu der Frage nach einer fertigen Funktion schon erwartet habe. Nun nach den Bemerkungen im Bezug auf Tabs, Zeilenvorschub (Whitspace) bin ich froh die Frage gestellt zu haben, da ich genau diese Zeichen ja auch ausblenden muss. Nochmals Danke.
Hier die Variante ohne Kopieren:
1 | #include <ctypes.h> |
2 | |
3 | char * |
4 | ltrimstr(char *s) |
5 | {
|
6 | char c; |
7 | |
8 | while ((c = *s++) != 0 && isspace(c)) |
9 | /* advance pointer */ ; |
10 | return s; |
11 | }
|
Da frag ich mich doch: Was liefert eigentlich isspace für '\0'? Könnte man das abkürzen zu while( isspace(*s++) ) ;
> Was liefert eigentlich isspace für '\0'?
0, gehört nicht zu den white space characters. Ja, damit
könnte man diesen Test wirklich noch weglassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.