est-ce que le lecteur retournera toujours qque chose de formaté exactement comme cela?
si oui suffit d'extraire les caractères au bon endroit
par exemple avec strncpy()
si non, si vous prenez toujours les 6 chiffres après le tiret, alors il faut chercher le tiret et ensuite extraire les 6 caractères (pour chercher le tiret c'est la fonction strchr()
Voici les fonctions en C ou C++ qui travaillent sur des buffer de caractères (qui ont un '\0' à la fin)
un exemple d'usage en fonction des contraintes (en pratique il vaut mieux tester quand même pour ne pas déborder de la mémoire)
const char QRCode[] = "E00000-1234569999";
void setup() {
char lcdBuffer1[7]; // 6 caractères plus le '\0' à la fin
char lcdBuffer2[7];
char lcdBuffer3[7];
char lcdBuffer4[7];
char lcdBuffer5[7];
Serial.begin(115200);
// -------------------------------------------------------------------
// si on sait que la chaîne commence toujours à l'index No 7
// -------------------------------------------------------------------
strncpy(lcdBuffer1, QRCode + 7, 6); // on copie 6 caractères à partir de l'index 7
lcdBuffer1[6] = '\0'; // on marque la fin de chaine
// on peut aussi utiliser la fonction qui recopie de la mémoire
memcpy (lcdBuffer2, QRCode + 7, 6); // on copie 6 caractères à partir de l'index 7
lcdBuffer2[6] = '\0'; // on marque la fin de chaine
// -------------------------------------------------------------------
// si on ne sait pas trop où les 6 caractères commencent
// -------------------------------------------------------------------
// avec strncpy
strncpy(lcdBuffer3, strchr (QRCode, '-') + 1, 6); // on extrait 6 caractères en trouvant le '-' et on commence au caractère suivant
lcdBuffer3[6] = '\0'; // on marque la fin de chaine
// ou avec memcpy
memcpy (lcdBuffer4, strchr (QRCode, '-') + 1, 6); // on extrait 6 caractères en trouvant le '-' et on commence au caractère suivant
lcdBuffer4[6] = '\0'; // on marque la fin de chaine
// -------------------------------------------------------------------
// si on veut les caractères entre le tiret et s'arrêter au premier 9 suivant le tiret
// -------------------------------------------------------------------
// avec strncpy, ce serait mieux bien sûr de tester que les pointeurs ne sont pas nulls
char * ptrPostTiret = strchr (QRCode, '-') + 1; // le pointeur dans la chaîne sur le caractère après le tiret
int nbChar = strchr (ptrPostTiret, '9') - ptrPostTiret ; // on cherche où est le premier 9 qui suit le tiret, ensuite et on fait la différence pour trouver le nb de caractères
strncpy(lcdBuffer5, ptrPostTiret, nbChar ); // on extrait les caractères concernés
lcdBuffer5[nbChar] = '\0'; // on marque la fin de chaine en priant fort que nbChar < 7 :-)
Serial.print("["); Serial.print(QRCode); Serial.println("]");
Serial.print("["); Serial.print(lcdBuffer1); Serial.println("]");
Serial.print("["); Serial.print(lcdBuffer2); Serial.println("]");
Serial.print("["); Serial.print(lcdBuffer3); Serial.println("]");
Serial.print("["); Serial.print(lcdBuffer4); Serial.println("]");
Serial.print("["); Serial.print(lcdBuffer5); Serial.println("]");
}
void loop() {}