String en int dans un for

Bonjour, j'ai trouvé ce code sur le net pour séparer les valeurs, il fonctionne bien, mais j'ai 2 questions :

#include <string.h>

  String input = "10,20,40";
  char delimiter = ',';
  int val1,val2,val3;

void setup() 
{
  Serial.begin(115200);

  for (int i = 0; i < 3; i++) {   
    Serial.println(input.substring(0, input.indexOf(delimiter)));
    input = input.substring(input.indexOf(delimiter) + 1 );
  }
}

void loop() 
{
}

-Comment peut fonctionner le for si le i n'est pas implémenté dans la boucle ?

-Car je voudrais passer les "sous string" en int distingue et je ne pige pas.

C'est parce que la seconde ligne du bloc for enlève le début de la string.

J'ai essayé ceci

#include <string.h>
  String input = "10,20,40";
  char delimiter = ',';
  int val1,val2,val3;
  char valeur[3];
  
void setup() {

  
  Serial.begin(115200);

  for (int i = 0; i < 3; i++) {   
    
    Serial.println(input.substring(0, input.indexOf(delimiter)));
    
    input = input.substring(input.indexOf(delimiter) + 1 );
    valeur[i]= input.toInt();
  }

  for (int i = 0; i < 3; i++) {   
Serial.println( valeur[i]);
  }
}


void loop() 
{
}

mais cela donne ça :

10:46:09.342 -> 10
10:46:09.342 -> 20
10:46:09.342 -> 40
10:46:09.342 -> 
10:46:09.342 -> (
10:46:09.342 -> (

Ah, j'ai compris merci

cela fonctionne maintenant

Si tu cherches à obtenir les nombres entre des séparateurs connus, tu peux utiliser strtok

char[] inp = input.c_str(); // transforme la String en tableau de char
char * pch;
pch = strtok (inp,","); // séparateur ','
while (pch != NULL)
  {
    int n = atoi(pch);
    Serial.println(n);
    pch = strtok (NULL, ",");
  }
1 Like

Je vais utiliser cela, il est moins gourmand en espace de stockage, merci encore

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.