Contenu de 2 pointeurs dans un troisieme

Résolu
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 - 27 mars 2006 à 14:43
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 - 27 mars 2006 à 16:27
salut a tous,
j'ai un petit pb et j'aimerais vous demander votre aide.
- 3 pointeurs LPVOID a,b,c
- je souhaite ecrire le contenu de a et de b dans c
- on connait la taille de a et b
- sizeof(c) = sizeof(a) + sizeof(b)
- a et b pointent sur des données binaires non typés

ma question est la suivante: comment ecrire le contenu de b à la suite du contenu de a dans un buffer c, un peu comme la concatenation de 2 chaines de caracteres dans une 3eme avec la fonction sprntf(buf1,"%s%s",buf2,buf3) ?

merci de vos réponses

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
27 mars 2006 à 15:01
Tu peux utiliser memcpy(dest,src,size):

memcpy(c,a,sizeof(a));
memcpy(c+sizeof(a),b,sizeof(b));

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 mars 2006 à 15:44
LPVOID n'a pas de sizeof.
Aussi faire gaffe au sizeof qu'il ne retourne pas 4 inconditionnellement (souvent si pointeur en param de fonction).

Mets un type à tes pointeurs sinon faut coder la taille en dur.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 1
27 mars 2006 à 15:54
dis moi brunews, comment faire pour coder la taille en dur de LPVOID, étant donné que cette taille je la connais ?
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
27 mars 2006 à 15:56
int taille=16;

ça c'est codé en dur...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 mars 2006 à 16:06
si a référence des 32 bits et b des 16 bits:

*((DWORD*) c) = *((DWORD*) a);
*((WORD*) (((BYTE*)c) + 4)) = *((WORD*) b);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 1
27 mars 2006 à 16:27
merci a tous de votre aide.
en remplacant le type LPVOID par LPBYTE, la copie des 2 buffers se fait bien dans le troisieme.
ensuite je peux caster le buffer obtenu comme je veux et ca marche.
avec le type LPBYTE, on a maintenant une taille pour le buffer de sortie
0
Rejoignez-nous