\n aus einem String entfernen
-
Hallo,
Ich habe einen String, der vom User eingegeben wird. Wenn dieser nun Enter drückt, wird automatisch auch ein \n eingefügt. Dieses möchte ich nun irgendwie raus bekommen. Ich habe nur keine Idee, wie. Danke für eure Hilfe,
Elektranox
-
str[strlen(str) - 1] = '\0';
-
Ah danke für den Denkanstoß
-
void trim(char *s) { while (*s) (*s == '\n' || *s == '\r') ? (*s = 0) : (++s); }
terminiert den string nach dem ersten umbruch.
-
Warum so schlecht nachvollziehenden Code schreiben?
-
warum schlechten code schreiben?
hier nochmal schoen zerdroeselt:
void trim(char *s) { while (*s) /* so lange der string nicht zu ende ist... (sonst waere *s == 0 wegen der nullterminierung) */ /* hier benutze ich den ternaeren operator, damit die leute nicht vergessen, dass es ihn gibt */ (*s == '\n' || *s == '\r') /* wenn das aktuelle zeichen *s entweder \n oder \r ist... */ ? (*s = 0) /* ... dann wird es zum nullerminierungszeichen. beim naechsten while durchlauf wird abgebrochen */ : (++s); /* ... sonst wird zum naechsten zeichen gesprungen */ }
mainview, moechtest du auch einen code praesentieren?
-
Den ?: Operator sollte man meines Wissens nur nehmen, wenn man etwas zuweist, wie i = a ? b : c; und nicht als if/else missbrauchen.
-
feigling schrieb:
Den ?: Operator sollte man meines Wissens nur nehmen, wenn man etwas zuweist, wie i = a ? b : c; und nicht als if/else missbrauchen.
darueber laesst sich streiten. ich haette genauso ein if-else nehmen koennen. jeder anstaendige compiler kennt schalter, die beides zum gleichen code optimieren.
im uebrigen ist es uebliche praxis, returnwerte (auch von operatoren) einfach zu ignorieren:
- somevar++;
- http://www-ccs.ucsd.edu/c/stdio.html#printf
-
feigling schrieb:
Den ?: Operator sollte man meines Wissens nur nehmen, wenn man etwas zuweist, wie i = a ? b : c; und nicht als if/else missbrauchen.
wieso ned? ich finde die trim funktion vom crackwitz gut. schön kompakt und eben gut, wo ist denn das prob?
-
Gerder schrieb:
feigling schrieb:
Den ?: Operator sollte man meines Wissens nur nehmen, wenn man etwas zuweist, wie i = a ? b : c; und nicht als if/else missbrauchen.
wieso ned? ich finde die trim funktion vom crackwitz gut. schön kompakt und eben gut, wo ist denn das prob?
das prob ist das man zuviel denken muss um die funktion zu kapieren.
-
keiner sagt, dass sie fuer anfaenger leicht verstehbar ist. aber man kann an ihr einiges lernen.