Memcpy sur un tableau de uint8_t

Bonjour,
J'essaye d'utiliser memcpy sur un tableaux de uint8_t mais j'ai a chaque fois une erreur:

uint8_t keyboardInput[MAX_BUFFER_KBD];
int index_buff_kbd;

 memcpy(&keyboardInput+(index_buff_kbd-1), (const uint8_t *)32, 1);

Je voudais copier le caractere 32 (espace) a un endroit précis du tableau (index - 1) du tableau.
J'utilise memcpy car il peut y avoir des données binaires, je ne peux donc pas utiliser les fonctions standard tel que strcpy, strlen, strcat.

Erreur:

D:\donnees\dev\ARDUINO2\sketch\PICO2\MINITEL\Minitel1B_Telnet_Client3\Minitel1B_Telnet_Client3.ino: In function 'void editKeyboardInput(int)':
D:\donnees\dev\ARDUINO2\sketch\PICO2\MINITEL\Minitel1B_Telnet_Client3\Minitel1B_Telnet_Client3.ino:186:15: warning: 'void* memcpy(void*, const void*, size_t)' offset 0 is out of the bounds [0, 0] [-Warray-bounds=]
  186 |         memcpy(&keyboardInput+(index_buff_kbd-1), (const uint8_t *)32, 1);
      |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Merci de votre aide.

Bonjour,

Tu peux faire

  uint8_t keyboardInput[MAX_BUFFER_KBD];
  int index_buff_kbd;
  const uint8_t val=32;
  memcpy(keyboardInput + index_buff_kbd - 1, &val, 1);

Mais ça sert à quoi d'utiliser memcpy, il suffit de faire
keyboardInput[index_buff_kbd - 1]=32;

Pourquoi utiliser la méthode memcpy pour la recopie d'un et seul caractère ?
A ce propos, la syntaxe (const uint8_t *)32 est l'adresse 32 sur un uint8_t et non le caractère 32 ... autant dire que le programme partira au mieux dans les choux et au pire semblera fonctionner :wink:

Écrire plutôt et tout simplement:

keyboardInput[index_buff_kbd - 1] = 32;

A suivre...

Edit: Argh ! ... doublé par kamill

Merci de votre aide, je vais faire comme vous me le suggérez.

Merci ca fonctionne et ca ma éviter d'utiliser un String, je préfère la gestion d'un buffer.

Ou même pour que ce soit plus compréhensible

keyboardInput[index_buff_kbd - 1] = ' ';

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.