Re: C: Newline entfernen

From: Christian Lackas <lackas(at)mail.desy.de>
Date: Sun, 28 Apr 2002 17:32:43 +0200

* 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 message
Received on Sun 28 Apr 2002 - 17:33:18 CEST

search this site