PDA

View Full Version : Funzione memcpy


TEX67
08-10-2010, 08:06
Ciao a tutti , veloce informazione riguardo la memcpy , se creo un array di 50 elementi di una struttura come da esempio:

typedef struct _Cordinate{
unsigned int X;
unsigned int dX;
unsigned int Y;
unsigned int dY;
unsigned int Indice;
}Cordinate;

Quando trasferisco i dati da un array all'altro è corretto scrivere il seguente codice:
_Cordinate AA[50]; //Secondo array
memcpy(AA,MappaC,50 * 5);

Eseguendo il codice mi accorgo che vengono trasferiti dalla memcpy solo i primi 13 elemementi dell'array , dove sbaglio.


Grazie a tutti per l'aiuto.

:mc:

Supdario
08-10-2010, 10:25
Ciao a tutti , veloce informazione riguardo la memcpy , se creo un array di 50 elementi di una struttura come da esempio:

typedef struct _Cordinate{
unsigned int X;
unsigned int dX;
unsigned int Y;
unsigned int dY;
unsigned int Indice;
}Cordinate;

Quando trasferisco i dati da un array all'altro è corretto scrivere il seguente codice:
_Cordinate AA[50]; //Secondo array
memcpy(AA,MappaC,50 * 5);

Eseguendo il codice mi accorgo che vengono trasferiti dalla memcpy solo i primi 13 elemementi dell'array , dove sbaglio.


Grazie a tutti per l'aiuto.

:mc:

Prova così:

Cordinate AA[50]; //Perché usi _Cordinate se c'è il typedef?
memcpy(AA, MappaC, sizeof(struct _Cordinate)*50);


Se devi copiare 50 strutture devi moltiplicare 50 per la grandezza della struttura.

yorkeiser
08-10-2010, 10:36
Sostituisci 50 * 5;
con
50 * sizeof(Cordinate);

Un unsigned int non occupa 1 byte ma 4, quindi ti perdevi un quarto dell'array.

TEX67
12-10-2010, 08:40
Ok , cosi funziona , grazie a tutti