* Stefan Jahn <stefan.jahn(at)nemesis-sektor.de> [020428 16:57]:
Hallo Stefan,
> Probiere gerade ein Programm in C zu schreiben. Folgendes Problem: Ich
> habe einen String der am Ende ein Newline (\n) hat. Wie kann ich diesen
> Newline vom String entfernen?
ersetzte das Newline einfach durch ein 0-Byte:
text[strlen(text)-1] = '\0';
> Folgendes hab ich probiert (text ist "Test\n"):
>
> text_neu=strncpy(text_neu,text,strlen(text)-2);
>
> Das funktioniert so weit auch, blos weiß C jetzt nicht mehr wie lange
> der String text_neu ist. Überschreibe ich diese Variabel im nächsten
> Schritt mit einem kürzeren Text, so wird mir immer noch der Rest vom
> alten Text angezeigt.
Du kopierst hier das abschließende 0-Byte nicht mit. Der String endet so
erst bis zufällig irgendwo eines gefunden wird (oder du nicht mehr auf
den Speicher zugreifen darfst).
BTW: strlen() liefert die Anzahl der Zeichen *ohne* 0-Byte.
Mehr unter
man 3 strlen
man 3 strncpy
> P.S.: Stringfunktionen hat ja C ja nicht gerade besonders viele, da
> konnte ja Pascal mehr ... ;-)
use Perl;
Gruß
Christian
-- Hawkin's Fortschrittstheorie: Fortschritt besteht nicht darin, eine falsche Theorie durch eine richtige zu ersetzen. Er besteht darin, eine falsche Theorie durch eine spitzfindigere falsche zu ersetzen. To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sun 28 Apr 2002 - 17:33:18 CEST