Problema nella copia di Struct

di il
6 risposte

Problema nella copia di Struct

Ciao a tutti,

sono alle prese con il seguente programma: copiare alcuni dati in un array contenenti la struttura Pack e poi trasmettere l'array via TCP su sistema Linux. Prima di inviare la struttura ho visto che alcuni dati sono sbagliati, non li copia bene e di conseguenza in ricezione non ottengo la struttura desiderata. Ora vi mostro come copio i dati (riporto il codice essenziale di interesse):
/* Le strutture */

struct Time 
{
  int counter;
  double value[100];
} packTime;


struct Freq
{
  int frequency;
  double record[50];
} packFreq;


typedef struct Pack
{
 int size;
 char data[104];
} ;


/* array Pack */
Pack arrayPack[2];
In pratica devo riempire l'array "arrayPack" una volta con una struttura packFreq nel campo data della struttura Pack, e come array di char e una volta con un struttura packTime, sempre nel campo data di Pack.

Ho fatto in questo modo:

arrayPack[0].size = 50; /* valore fittizio */
memcpy(&arrayPack[0].data, (char *) &packFreq, sizeof(packFreq) );

arrayPack[1].size = 50; /* valore fittizio */
memcpy(&arrayPack[1].data, (char *) &packTime, sizeof(packTime) );

Bene se provo a stampare i valori dell'array, non ottengo valori giusti. Per la stampa faccio così:
Pack tmpPack;
memcpy(&tmpPack, &arrayPack[0], sizeof(arrayPack[0]) );

Freq tmpFreq;
memcpy(&tmpFreq, (Freq*) &tmpPack.data, sizeof(tmpFreq) );

Time tmpTime;
memcpy(&tmpTime, (Time*) &tmpPack.data, sizeof(tmpTime) );
Le Strutture che ho chiamato tmpFreq e tmpTime non contengono valori corretti.

Cosa posso fare? Potete dirmi se ho usato un buon metodo con l'array e le memcpy?

Spero di ricevere aiuto, è molto importante.

Grazie a tutti!

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte