🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Problem mit cat()

#1814
From: Karl-Heinz Krause
Date: Mon, 11 Mar 1996 17:03
40 lines
1585 bytes
Am 9. März 96 schrieb Steffen Zimmert (S.ZIMMERT@AME.osn.de):

> 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?

Da hast Du recht.

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

Der Knackpunkt ist das 'return r'. Hier zeigt 'r' nicht mehr auf den
Anfang des erzeugten Strings, da Du es in der Schleife verändert hast.

Wenn es darum geht, ein möglichst kurzes Progrämmchen zu schreiben, dann
würde ich es so machen:

char* cat(const char* s1, const char* s2)
{
    int ll = strlen(s1);
    char* r = new char[ll+strlen(s2)+1];

    strcpy (r, s1);
    strcpy (r+ll, s2);
    return r;
}



Karl-Heinz Krause
Technical Details
Message-ID: <4i1mdv$d3s@news00.btx.dtag.de>
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail
References: <xQZtdMD356aRz1@p-zimmer.ame.osn.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail
From: Krause@t-online.de (Karl-Heinz Krause)
Newsgroups: de.comp.lang.c++
Subject: Re: Problem mit cat()
Date: 11 Mar 1996 17:03:59 GMT
Organization: Telekom Online Internet Gateway
Message-ID: <4i1mdv$d3s@news00.btx.dtag.de>
References: <xQZtdMD356aRz1@p-zimmer.ame.osn.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Sender: 0913148778-0001@t-online.de (Karl-Heinz Krause)
X-Newsreader: Forte Free Agent 1.0.82