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