Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » memcpy oder strncpy ?

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 <
000
11.12.2003, 11:20 Uhr
~centrino
Gast


Ich habe folgendes Problem, was ihc noch nicht verstehe:

was ist der Unterschied zw. memcpy und strncpy

memcpy(ifr.ifr_name, ifname, IFNAMSIZ); | mit "\O" ?

strncpy(ifr.ifr_name, ifname, IFNAMSIZ);

sind beie operation gleich ? wann soll man welche nehmen und warum ?
gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.12.2003, 11:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na der eine will expliziert characters haben der andere nimmt void. memcpy frisst quasi alles (ohne expliziet zu casten). das ist für mich der grund warum ich strncpy auch nicht verwende...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.12.2003, 11:38 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja, ein nicht unwesentlicher Unterschied ist, daß strncpy mit dem Kopieren aufhört, bis IFNAMSIZ zeichen kopiert wurden oder aber ein 0 Byte gefunden wird. Wird es gefunden, wird es noch kopiert und dann ist Ende.
memcpy kopiert immer IFNAMSIZ Zeichen/Bytes.

Von strncpy ist jedoch stets abzuraten, weil es im Zweifel nicht das Nullbyte selbst kopiert:

C++:
char buffer[7];
strncpy(buffer, "virtual", sizeof(buffer));


Kopiert wirklich den String "virtual" nach buffer. Mangel Platz wird das Nullbyte aber nicht geschrieben. Dagegen verhält sich das hier besser:

C++:
char buffer[7];
strcpy(buffer, ""); // Alternativ: buffer[0] = 0;
strncat(buffer, "virtual", sizeof(buffer));


strncat kopiert die ersten 6 Zeichen nach buffer und merkt dann, daß nicht mehr genug platz für das 7 Zeichen ist und kopiert stattdessen das Nullbyte dorthin.
--
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
003
11.12.2003, 11:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Naja,....


sehr einfühlsam von dir ausgedrückt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: