cedoli
Messages postés58Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention13 avril 2007
-
20 mars 2007 à 16:18
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
21 mars 2007 à 16:08
Bonjour à tous
Est-il possible de faire ce que je fais en trois ligne, en une ligne ?
Donc je remplis mon array en 2 lignes puis je l'envois en arguments d'une fontion.
<hr size="2" width="100%" />memcpy(&sendData,&lonmsg, sizeof(lonmsg));
memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout));
fill_send_msg(&sendData, sizeof(lonmsg)+sizeof(inout));
<hr size="2" width="100%" />
Merci d'avance :)
& signifie que tu donne l'adresse de la variable. Il ne s'agit donc pas d'un pointeur je me trompe ? Dans ce cas, pourquoi utiliser memcpy ? Bien plus simple de faire sendData = lonmsg;
Ensuite, tu fais:
memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout));
Oulalalalalalala mais c'est quoi ça ?
&sendData[sizeof(lonmsg)]. Ça compile ça ? J'ai jamais essayé de faire ça. Quoi qu'il en soit, ça veut dire que tu va à l'emplacement de sendData et que tu te déplace dans la mémoire de +sizeof(lonmsg) pour y ajouter inout. Ça sens le crash à plein nez ça.
D'après moi, sendData, lonmsg et inout sont des pointeurs c'est bien ça ? N'oublie pas qu'un pointeur pointe sur une adresse. & est donc inutile car tu te trouve à donner l'adresse du pointeur même (ce qui n'est pas très conseillé). Ce que tu veux donc faire devrais ressembler à ceci:
memcpy(sendData, lonmsg, strlen(lonmsg)); //<- strlen c'est seulement si il s'agit d'une chaine de caractère
Pour le memcpy(&sendData[sizeof(lonmsg)],&inout, sizeof(inout)), là j'ignore complètement ce que tu veux faire.
Si tu n'a rien compris de ce que j'ai dit: soit j'explique très mal, soit c'est trop avancé pour toi. Si les pointeurs sont encore trop avancés pour toi, replonge toi dans le livre de C et essais de bien métriser tout ce qui touche aux pointeurs. Un pointeur mal utilisé c'est comme une allumette à coté d'un baton de TNT... dans les deux cas, ça risque de faire BOOOOOOOOM!!!!
cedoli
Messages postés58Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention13 avril 2007 21 mars 2007 à 09:49
bon pour commencer j'ai oublier de préciser un truc : il s'agit de neuron c : programation de microcontrolleur neuronchip.
lonmsg et inout sont des structures : c'est pourquoi j'utilise & afin de pointer vers leur adresse en mémoire.
Sendata est un array de byte.
Lorsque je fais &sendData[sizeof(lonmsg)] c'est pour me déplacer dans senddata, apres la taille de lonmsg pour ne pas 'écraser.
Voila :)
Vous n’avez pas trouvé la réponse que vous recherchez ?