🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1800

Problem mit cat()

#1800
From: Steffen Zimmert
Date: Sat, 09 Mar 1996 13:53
45 lines
1699 bytes
Hallo!

Als kleine Übungsaufgabe im C++-Standardwerk "Die
C++-Programmiersprache" findet sich auch die Aufgabe, die Funktion
`cat()` zum Aneinanderhängen zweier Strings zu schreiben. Der
daraus resultierende String soll mit `new` angelegt werden.

Meine Lösung (funktioniert):
char* cat(const char* s1, const char* s2)
{
    int l1  = strlen(s1);
    char* r = new char[l1+strlen(s2)+1];


        strcpy(r,s1);

        int i = l1;   (*)

        while(r[i++] = *s2++);

        return r;
}


Nun dachte ich mir, es könnte auch noch kürzer gehen und wollte die
letzten Zeilen so schreiben:

(*) r += l1;    <- Setze den Pointer auf das letzte Zeichen

    while(*r++ = *s2++);

    return r;


Leider will das irgendwie nicht klappen.. :-(
Anscheinend klappt r += l1 nicht, aber wenn der Pointer r am Anfang
auf Index 0 zeigt und ich ihn um l1 erhöhe, dann müsste er doch auf
das terminierende `\0`-Zeichen von r zeigen, oder?

Kann mir jemand erklären, was ich wieder falsch mache....

        MfG,    Steffen

|| S.Zimmert@AME.osn.de  --  snzimmer@cip.informatik.uni-erlangen.de
|| PGP-Fingerprint = A0 4D B5 89 4F B1 07 91 AF C2 A5 A7 84 19 8E 9F
Technical Details
Message-ID: <xQZtdMD356aRz1@p-zimmer.ame.osn.de>
Path: arc1-ca.pugleaf.net!ame.osn.de!S.ZIMMERT

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!ame.osn.de!S.ZIMMERT
From: S.ZIMMERT@AME.osn.de (Steffen Zimmert)
Newsgroups: de.comp.lang.c++
Subject: Problem mit cat()
Date: 9 Mar 96 14:53:17 +0100
Message-ID: <xQZtdMD356aRz1@p-zimmer.ame.osn.de>
Organization: AME Erlangen
X-Mailer: MicroDot 1.10 [REGISTERED 000356]
X-Gateway: ZCONNECT UH link-n.cl.sub.de [UUCPfZ V5.59 U005]
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-ZC-Telefon: 09841/5416
X-ZC-Post: Hagelsteingasse 2