Demande d'explication séparateur string

Bonjour à la communauté.

Étant débutant en programmation j'ai quelque problèmes sur une partie précise de mon code.
En gros mon arduino reçois un string de type "15&16&17&18&19&20&12" et j'aimerai obtenir 7 variables différentes qui contiennent chacune une des valeurs.
J'ai fais quelque recherche sur internet, j'ai donc essayé d'utiliser la fonction strtok mais je ne comprend vraiment pas son utilisation, au final je n'arrive à rien.
J'ai une arduino uno.

Pourriez vous me guider, ou au moins me donner quelques pistes :slight_smile:
Merci

Voici un exemple pour strtok(). Dans ton cas le caractère séparateur n'est pas ' ' mais '&'.
Il y a plein d'autres exemples sur le Web.

C'est exactement l'exemple que j'ai essayé d'utiliser.
Il existe un tas d'autre exemple analogue sur internet, si je fais cette demande ici c'est justement que je ne comprend pas ces exemples.

Salut,

Pour t'aider un peu il faudrait comprendre ce que tu n'as pas compris :).

Comme je suis passé par là j'imagine que ta principale difficulté vient de la syntaxe

char *pointeur

l'étoile ne sert pas à faire joli mais indique un pointeur de caractère. Il y a foule de doc sur internet sur le C,C++ et les pointeurs comme celle là par exemple. On ne peux pas apprendre ce concept à ta place ;D

La seconde difficulté peux venir du fait que la fonction strok() est à deux états, le premier appel seul demande la chaine de caractères ensuite on transmet seulement le séparateur. Si il n'y a plus de caractère de séparation la fonction retourne NULL et la boucle s’arrête.

Quelque chose comme ça ?

   char str[20] = "15&16&17&18&19&20&12";
   const char s[2] = "&";
   char *token;
   
   /* get the first token */
   token = strtok(str, s);
   
   /* walk through other tokens */
   while( token != NULL ) {
      Serial.println( token );
      token = strtok(NULL, s);
   }

Attention, chaîne trop courte. Ta chaîne contient 20 caractères :

  char str[20] = "15&16&17&18&19&20&12";

En C une chaîne se termine toujours par un zéro, donc un caractère de plus :

  char str[21] = "15&16&17&18&19&20&12";

Sans préciser la longueur, c'est encore mieux, le compilo se débrouille tout seul :

  char str[] = "15&16&17&18&19&20&12";

voili voilou

@+