Convertir une structur en char*

Signaler
Messages postés
97
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
20 janvier 2008
-
Messages postés
319
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
16 février 2009
-
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

Messages postés
319
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
16 février 2009

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
Messages postés
319
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
16 février 2009

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