Memcpy arbeitet nicht so wie ich das denke
-
Hallo Zusammen,
ich will eine Routine schreiben, welche INT, LONG, CHAR Arrays in einen Buffer überträgt und umgekehrt.
Derzeit habe ich nur mit dem kopieren ein Problem und ich weiss nicht wieso.Eigentlich handelt sich um ein reines Blockkopieren von Speicherbereichen.
Hier der Code
void *MyMemCpy(void *vdest, const void *vsrc, size_t bytes) { const char *src = vsrc; char *dest = vdest; int i; for (i = 0; i < bytes; i++) dest[i] = src[i]; return vdest; } int main(int argc, char *argv[]) { int Quelle[3]; int Ziel[3]; char Buffer[12]; int i; Quelle[0]=0x3344; Quelle[1]=0x3355; Quelle[2]=0x3366; MyMemCpy(Buffer,Quelle,6); MyMemCpy(Ziel,Buffer,6); for(i=0;i<3;i++) { if(Quelle[i] != Ziel[i] ) printf("Nummer %i ist unterschiedlich\n",i); else printf("Nummer %i ist gleich\n",i); } return 0; };
Das Programm gibt mir jedoch die folgende Ausgabe :
user@pitbully:~/projekt/memcpy$ ./test
Nummer 0 ist gleich
Nummer 1 ist unterschiedlich
Nummer 2 ist unterschiedlichEigentlich wollte ich ja die Standardroutine "memcpy" nehmen, die arbeitet aber auch nicht !
Wieso , wo ist der Fehler ?
Gruesse
-
Ein int ist auf deinem System offensichtlich 4 Bytes groß
PS: Schau dir mal den sizeof Operator an.
-
Danke fuer den Tip
ein Short eingefuegt und schon arbeitet es wie gewünscht !!!
Gruss