Petit un problème avec structure

Petit un problème avec structure - C - Programmation

Marsh Posté le 01-12-2013 à 09:19:36    

Salut à tous,
 
J'ai un petit problème avec une structure en c. LA voici :
 

Code :
  1. typedef struct XbeeCmd XbeeCmd;
  2. struct XbeeCmd
  3. {
  4.     unsigned char dest_addr64[8];
  5.     unsigned char type_donnee[1];
  6.     char cmd[255];
  7. };


 
et a un moment je l'initie dans le code :

Code :
  1. XbeeCmd1[0].dest_addr64[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x62, 0xA9, 0x25};
  2.     XbeeCmd1[0].type_donnee[1]=0x31;
  3.     XbeeCmd1[0].cmd="tmp:2000";


 
Mais il me fait des erreurs :
 

Code :
  1. client_cmd.c:43:34: error: expected expression before ‘{’ token
  2.      XbeeCmd1[0].dest_addr64[8] = {0x00, 0x13, 0xA2, 0x00, 0x40, 0x62, 0xA9, 0x25};
  3.                                                  ^
  4. client_cmd.c:45:20: error: incompatible types when assigning to type ‘char[255]’ from type ‘char *’
  5.      XbeeCmd1[0].cmd="tmp:2000";
  6.                                 ^


 
Comment faut'il les remplir s'il vous plait car je n'arrive pas à comprendre.
 
Merci de votre aide.

Reply

Marsh Posté le 01-12-2013 à 09:19:36   

Reply

Marsh Posté le 01-12-2013 à 11:47:33    

Bonjour !
 
Vous ne pouvez pas en C faire ce genre d'assignation.
 
Vous pouvez, sauf erreur de ma part, les faire à la création de la variable :  
 

Code :
  1. XbeeCmd XbeeCmd1 = {{0x00, 0x13, 0xA2, 0x00, 0x40, 0x62, 0xA9, 0x25}, 0x31, "tmp:2000"};


 
Sinon, vos lignes sont incorrectes car :  
 
 * Dans la première, vous tentez d'assigner un tableau à une valeur qui est le 9eme élément (cf. en dessous) d'un tableau
 * Dans la deuxième, vous assignez une valeur au deuxième élément (les indices de tableaux commencent à 0 en C) à un tableau d'un seul élément (d'ailleurs, pourquoi utiliser un tableau au lieu d'un simple "unsigned char" ? Pour pouvoir augmenter la taille plus tard ?)  
 * Dans la troisième, l'assignation dans une chaine se fait avec strcpy, là, cela revient à l'assignation à cmd d'un pointeur (temporaire, de plus), ce qui est en effet interdit.
 
J'espère avoir été clair dans mes tentatives d'explication :)
 
Bonne continuation !
 
PS : Si vous voulez initialiser le champ adresse après la création de la variable, vous devez assigner les octets 1 par 1.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed