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 unterschiedlich

    Eigentlich 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


Log in to reply