Comment concatener char * et char tab ?

Bonjour,

La galère : pointeur et tableau ?

Comment concatener char * et char tab pour l'envoi dans la fonction vw_send de VirtualWire ?

Merci d'avance pour votre aide .
Xylobot.

Mon code -->

#include <VirtualWire.h> // inclusion de la librairie VirtualWire

char *msg = "Arduino"; // Tableau qui contient notre message

void setup() // Fonction setup()
{
    Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
    vw_setup(2000);		
}
int i; char buf[30]; char *c;
void loop() // Fonction loop()
{

        memset(buf,0,sizeof(buf));
        snprintf(buf, sizeof(buf), "%d", i);
        Serial.print(buf);

  /* ******************************************** */
  /* comment concaténer char * et char []  */
  /* ex strcpy (c,msg);                             */  <-- ca ne marche pas !   :0
  /*     strcat (c,buf);                              */
  /* ******************************************** */

    vw_send((uint8_t *) c, strlen(c));                   // On envoi le message
    vw_wait_tx();                                             // On attend la fin de l'envoi
    delay(1000);                                               // Et on attend 1s pour pas flooder
    i ++;
}

Edit de Jean-François : merci de mettre le code entre les balises

Qu'est-ce qui ne marche pas?
Au passage i n'est pas initialisé

Bonjour,

En fait, je n'arrive pas a concatener un nombre [converti en tab], avec un pointeur de chaine !

char *msg = "Arduino";
int i=0; char buf[30]; char *c;

        memset(buf,0,sizeof(buf));
        snprintf(buf, sizeof(buf), "%d", i);
        Serial.print(buf);      -->      resultat OK  :)
        strcpy (c,msg);               
        strcat (c,buf);   
        Serial.print(c);         -->      resultat non OK   :0
        vw_send((uint8_t *) c, strlen(c));

Merci pour votre aide
Xylobot.free.fr

Edit de Jean-François : merci de mettre le code entre les balises

De mes souvenirs
c est déclarer comme un pointer
buf est un pointer sur le tableau
Ce n'est pas de la concatenation mais de l'affectation
c= buf;
===> tu peux donc utiliser buf directement.

Comme le dit gerse, lorsque tu passes un tableau à une fonction, c'est en réalité un pointeur vers le premier élément de ce tableau qui est passé.

Donc si buf est un char[], tu peux le passer à n'importe quelle fonction qui attend un char*, par exemple strlen.
Et tu peux aussi le transtyper en uint8_t*;

memset(buf,0,sizeof(buf));
snprintf(buf, sizeof(buf), "%d", i);
vw_send((uint8_t *) buf, strlen(buf));