MEMCPY() soll nur Zeichen an fünfter Stelle kopieren, wie geht das!?
-
Hallo,
Die Funktion memcpy(void *dest, const void *src, size_t n) kopiert ja die ersten n Bytes aus src in dest.
Ich benötige aber nicht die ersten n Bytes, sondern nur genau das fünfte Byte. Geht das und wenn ja, wie muss ich vorgehen!?
Vielen Dank schonmal im Voraus.
mfg Andreas
-
Du denkst zu kompliziert - wenn du nur ein Zeichen zuweisen willst, reicht eine normale Zuweisung und etwas Pointer-Arithmetik (oder Indexzugriff):
char c5 = ((char*)src)[5];
(wenn src sowieso als char-Array vorliegt, kannst du den Cast weglassen)
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
danke für die schnelle Antwort. Naja ich habe aber 10 verschiedene Zeichen, nun will ich die ersten beiden und das fünfte kopieren, der Rest muss 0 bleiben.Bisher brauchte ich immer nur erste i Zeichen kopieren (memcpy (DEST, SRC, i * sizeof (long))
Wollte das schon gern wieder so mit memcpy machen, nur wie...
mfg Andreas
-
Dann mußt du doch alle Zeichen rüberkopieren, die du benötigst:
char src[10],dst[10]=""; //src füllen dst[0]=src[0]; dst[1]=src[1]; dst[4]=src[4];
Eventuell kannst du auch mit einem Hilfs-Array und einer for()-Schleife arbeiten:
int cpy_ind[]={0,1,4}; for(int i=0;i<3;++i) dst[cpy_ind[i]]=src[cpy_ind[i]];
memcpy() ist für deinen Zweck vermutlich nicht geeignet - das erwartet, daß du ihm einen zusammenhängenden Speicherbereich übergibst, den es kopieren soll.