system
October 13, 2011, 11:27am
#1
Bonjour à tous,
Bon, je suis toujours dans mes acquisitions de données, ça avance tout doucement, en fait c'est que je n'ai pas trop le temps de m'y mettre mais j'ai bon espoir.
Mon problème sur lequel je bute depuis un moment maintenant est le suivant : j'ai plusieurs variables, elles contiennent du texte ou des valeurs numériques, et je voudrai les mettre en une seule variable, séparées par des \t.
Explication :
variable1 = "toto";
variable2 = 456;
variable3 = "tata";
variable4 = 1;
Dans mon cas je voudrai avoir une dernière variable qui ait pour valeur :
variablefinale = "toto\t456\ttata\1";
Voilà, j'espère que quelqu'un pourra m'aider.
Merci d'avance à tous!
system
October 13, 2011, 1:23pm
#2
Salut!
Dans ton cas, il n'y a pas le choix: ce sera une variable char à la fin.
Je t'invite à voir ce lien sur la conversion de donnée en char: Référence Arduino français Main/Conversion Char .
Et pour les assembler à ta guise, c'est la concaténation que tu vas utiliser. Elle s'utilise avec un simple '+' entre chaque données (si je ne dis pas de connerie...).
system
October 13, 2011, 2:10pm
#3
Et non la fonction char() correspond plus à un cast qu'a une conversion.
char c = 123;
(char)123;
char(123);
reviens à l'identique.
Plusieurs possibilités avec objet String ou tableau de char avec ou sans fonctions.
void setup()
{
Serial.begin(9600);
//////////////////////////////////////////////////////////
String str1 = "toto";
String str2 = "tata";
int ent1 = 452;
int ent2 = 353;
String str = str1+"\t"+ent1+"\t"+str2+"\t"+ent2;
Serial.println(str);
str+= stringFormat("tutu", 263);
Serial.println(str);
/////////////////////////////////////////////////////////
char str_[80];
char str1_[] = "toto";
char str2_[] = "tata";
char buf[5];
strcpy(str_, str1_);
strcat(str_, "\t");
itoa(ent1, buf, 10);
strcat(str_, buf);
strcat(str_, "\t");
strcat(str_, str2_);
strcat(str_, "\t");
itoa(ent2, buf, 10);
strcat(str_, buf);
Serial.println(str_);
strcat(str_, stringFormat("tutu", 263));
Serial.println(str_);
}
void loop()
{
}
String stringFormat(String strAdd, int ent)
{
return "\t"+strAdd+"\t"+ent;
}
char* stringFormat(char *strAdd, int ent)
{
char str[20];
char buf[5];
strcat(str, "\t");
strcat(str, strAdd);
strcat(str, "\t");
itoa(ent, buf, 10);
strcat(str, buf);
return str;
}
system
October 13, 2011, 4:16pm
#4
tu devrais regarder la commande sprintf.
+1 avec Patsol, voire même la fonction snprintf bien plus sûre.
system
October 14, 2011, 8:47pm
#6
Un grand merci pour votre aide je suis désormais débloqué!
Bonne soirée!