Pages: [1]   Go Down
Author Topic: Comment concatener char * et char tab ?  (Read 827 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 17
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 -->
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
« Last Edit: January 11, 2012, 07:14:01 am by Jean-François » Logged

France
Offline Offline
Faraday Member
**
Karma: 40
Posts: 3634
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 17
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

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

Code:
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
« Last Edit: January 11, 2012, 07:15:00 am by Jean-François » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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*;

Code:
memset(buf,0,sizeof(buf));
snprintf(buf, sizeof(buf), "%d", i);
vw_send((uint8_t *) buf, strlen(buf));
« Last Edit: January 11, 2012, 07:13:34 am by Benvenuto » Logged

Pages: [1]   Go Up
Jump to: