sprintf avec des string

bonjour,

je cherche a mélanger des numériques et des chaines dans une seule chaine avec des longueurs fixes pour afficher proprement une date et une heure sur un LCD (en fait c'est un VFD en RS ....) mais ça ne change rien au problème,

voila mon code

void affheure()
{
  char lignedate[20];
  char ligneheure[20];
  char joursem[10];
  char nommois[5];
  
DateTime now = RTC.now();

joursem[10]="Mercredi";
nommois[5]="Fev";


sprintf(lignedate, "%s %02d %s %4d", joursem, now.month(), nommois, now.year());
sprintf(ligneheure, "%02d : %02d : %02d       %1d", now.hour(), now.minute(), now.second(), NTPok);

afSerial.write(11); // HOME
afSerial.print(lignedate);
afSerial.print(ligneheure);

Serial.print(lignedate);
Serial.println(ligneheure);
}

afserial envoi vers mon afficheur,
serial renvoi vers ma sortie RS arduino pour verification...

l'heure est parfaitement affichée mais pas la date,
sois j'ai des caractères incohérents, soit j'ai du vide...

en tout cas dès que je met un %s pour afficher une chaine dans mon sprintf ca ne marche pas !!

pouvez vous m'aider la dessus ?
je trouve pas de solution a mon problème...

Bonjour,

Ca m'étonne que le compilateur accepte ça:

joursem[10]="Mercredi";
nommois[5]="Fev";

Pour affecter un chaine à une autre, il faut utiliser strcpy

  strcpy(joursem,"Mercredi");
  strcpy(nommois,"Fev");

Si c'est une constante, il est aussi possible de l'affecter à un pointeur.

  const char *jourSem="Mercredi";

TROP FORT !!!!
ça marche !!!!

MERCI............

:slight_smile: