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.


Log in to reply