Go Down

Topic: Mixer des valeurs de variables (Read 1 time) previous topic - next topic

catsur

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!


schizophrene

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: http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ConversionChar.

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...).

osaka

#2
Oct 13, 2011, 04:10 pm Last Edit: Oct 13, 2011, 04:21 pm by osaka Reason: 1
Et non la fonction char() correspond plus à un cast qu'a une conversion.

Code: [Select]

char c = 123;
(char)123;
char(123);

reviens à l'identique.

Plusieurs possibilités avec objet String ou tableau de char avec ou sans fonctions.

Code: [Select]

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;
}

patsol

tu devrais regarder la commande sprintf.

SesechXP

+1 avec Patsol, voire même la fonction snprintf bien plus sûre.
Julien - www.idreammicro.com

catsur

Un grand merci pour votre aide je suis désormais débloqué!

Bonne soirée!

Go Up