Convertir une structur en char*

melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 6 mai 2005 à 18:20
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009 - 7 mai 2005 à 12:11
Voila! tout est dans le titre,

on ma parlé de memcpy, on peut m'en dire plus?
c'est pour transmettre une structure sur un autre PC, avec recv.

Quelqu'un peut m'indiquer la procedure à suivre?

merci à tous,

melkior le necrarque

2 réponses

cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
7 mai 2005 à 11:36
Salut !

Ca dépend de ta structure mais théoriquement c'est possible !
Voici un petit exemple :

typedef struct {
int a ;
float b ;
char* c ;
} UneStruct ;

void CopieStructure ( char* Dest, UneStruct* Src) {
Dest = (char*) malloc(sizeof(UneStruct)) ;

memcpy(Dest, &(Src->a), sizeof(int)) ;
memcpy(Dest + sizeof(int), &(Src->b), sizeof(float)) ;
strcpy(Dest + sizeof(int) + sizeof(float), Src->c) ;
}

Ca devrait fonctionner sans erreurs ;)

@+ Neria
0
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
7 mai 2005 à 12:11
J'ai oublié un petit truc : si tu veut t'en servir comme un char*, il faut placer un \0 à la fin de la chaîne donc :

Dest = (char*) malloc(sizeof(UneStruct)) ;

devient :

Dest = (char*) malloc(sizeof(UneStruct) +1) ;

et tu rajoutes à la fin du codes : Dest[sizeof(UneStruct)] = '\0' ;

@+ Neria
0
Rejoignez-nous