Article View: de.comp.lang.c++
Article #1800Problem mit cat()
From: Steffen Zimmert
Date: Sat, 09 Mar 1996 13:53
Date: Sat, 09 Mar 1996 13:53
45 lines
1699 bytes
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.ZIMMERTShow 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