d_jo
1
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.
lesept
2
C'est parce que la seconde ligne du bloc for enlève le début de la string.
d_jo
3
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 -> (
d_jo
4
Ah, j'ai compris merci
cela fonctionne maintenant
lesept
5
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
d_jo
6
Je vais utiliser cela, il est moins gourmand en espace de stockage, merci encore
system
Closed
7
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.