Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » strcat geht nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
13.10.2004, 08:34 Uhr
ao

(Operator)



Zitat von ~KEvin:
Man is das kompliziert!

Die Zeichenketten-"Unterstützung" in C ist in der Tat sehr ärmlich und mutet dem Programmierer eine Menge Handarbeit zu, Speicher reservieren, freigeben nicht vergessen, Null-Terminator anbringen und und und.

Immerhin gibts so elementare Funktionen wie strcpy, strcat, strcmp, strchr und die Verwandten, und nimmt man das Speichermanagement dazu, dann hat man die Bausteine, um sich bequemere Stringfunktionen zusammenzubasteln. Ist auch ne gute Übung für Leute, die sich näher mit C- (nicht C++)-Programmierung befassen wollen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
13.10.2004, 09:11 Uhr
Pablo
Supertux
(Operator)


Ja, vor allem, weil du damit sehr viel lernst. Wenn wan C/C++ Neuling ist, versteht man meistens die Zeiger nicht, man weiss nicht, wozu die gut sind und man versteht den Zusammenhang zwischen Zeiger und Inhalt des Zeigers, (bsp: zwischen str und *str). Am Anfang sieht man nicht, dass der Zeiger sozusagen 2 Inhalte hat und das ist schwer am Anfang. Mir hat auch viel Arbeit gekostet, bis ich die Strings in C voll in grif hatte, das war eine harte Zeit, ich hab immer wieder "Segmentation Faults" bekommen, wenn ich mit char*/char[] gearbeitet hab, das war echt ne grausame Zeit. Aber ich hab trotzdem weiter gemacht und jetzt hab ich keine Probleme damit. Die String-Handhanung von C hat mir auch etwas gezeigt, und zwar, was ein Pointer ist und wie man damit am besten umgeht, du verstehst dank der String-Behandlung sehr viel über die Pointers und solche Sachen. Als ich das verstanden hab, war ich echt sehr begeistert von den Zeigern und bis heute arbeite ich sehr gern damit.

Also gib nicht auf, nur weil's schwer ist, jeder muss durch diese Phase durch, es ist hart aber es lohnt sich, weil wenn du sowas verstehst, dann bist du nachher in der Lage andere schewere Dinge zu verstehen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
13.10.2004, 13:31 Uhr
Drager



Am besten immer strncat ,strncpy etc. verwenden, da es dadurch erschwert wird, fremden code mit hilfe deines programms (buffer-overflow) auszuführen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
13.10.2004, 13:45 Uhr
virtual
Sexiest Bit alive
(Operator)


@Drager
Streich besser das strncpy, damit es keiner hört: im Allgemeinen ist diese Routine ähnlich empfehlenswert wie gets. Verlß Dich besser nur auf strncat
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
13.10.2004, 17:44 Uhr
Pablo
Supertux
(Operator)


Wären memcpy und memmove da nicht sicherer?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
13.10.2004, 21:01 Uhr
Drager




Zitat von Pablo:
Wären memcpy und memmove da nicht sicherer?

es geht ja nur darum, dass du angibts wieviel du kopieren / verschieben willst.... (was bei memcpy ja auch gegeben ist..)


Zitat:

@Drager
Streich besser das strncpy, damit es keiner hört: im Allgemeinen ist diese Routine ähnlich empfehlenswert wie gets. Verlß Dich besser nur auf strncat



wieso? was genau ist an strncpy schlecht? macht das net nur sowas wie temp1[i] = temp2[i]? (für i < n)

Dieser Post wurde am 13.10.2004 um 21:05 Uhr von Drager editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
13.10.2004, 22:51 Uhr
ao

(Operator)



Zitat von Drager:
wieso? was genau ist an strncpy schlecht? macht das net nur sowas wie temp1[i] = temp2[i]? (für i < n)

Wenn der Quellstring (temp2) länger ist als n Zeichen, dann werden nur die ersten n Zeichen kopiert, und es wird kein Terminierungszeichen geschrieben. Es ist also nicht garantiert, dass temp1 hinterher ein den Konventionen entsprechender C-String ist.

Darum ist strncpy zumindest mit Vorsicht zu genießen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: