Article View: de.comp.lang.c++
Article #1814Re: Problem mit cat()
From: Karl-Heinz Krause
Date: Mon, 11 Mar 1996 17:03
Date: Mon, 11 Mar 1996 17:03
40 lines
1585 bytes
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-mailReferences:
<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