Question:
Convertir un entier en char []
ATE-ENGE
2017-07-25 01:21:40 UTC
view on stackexchange narkive permalink

Je cherche à convertir une valeur int en un tableau de caractères. actuellement, j'ai trouvé que ce qui suit renverra [number

  int num = [number] str = String (num); str.toCharArray (cstr, 16) ; Serial.println (cstr);  

Cependant, selon Majenko's The Evils of Arduino Strings, j'ai l'impression que ce code ferait ressembler le tas de mon Arduino au fromage suisse. Existe-t-il un meilleur moyen de changer un [int] en un tableau char [n] qui évite la classe de tring S ?

Un répondre:
Majenko
2017-07-25 01:26:43 UTC
view on stackexchange narkive permalink

itoa est la meilleure route:

  int num = 1234; char cstr [16]; itoa (num, cstr, 10); - > "1234 " 

Vous pouvez en savoir plus sur son utilisation ici.

Si vous voulez plus de contrôle sur le format du nombre (et ne pas t attention à l'utilisation accrue de PROGMEM), vous pouvez utiliser sprintf (ou le plus sécurisé snprintf ) pour le formater:

  sprintf (cstr, "% 05d", num); - > "01234"  

Ou avec la constante de chaîne PROGMEM:

  sprintf_P (cstr, (PGM_P) F (" % 05d "), num); - >" 01234 " 

Ou avec plus de valeurs:

  sprintf_P (cstr, (PGM_P) F ("% 02d:% 02d:% 02d "), heures, minutes, secondes); - >" 03:23:11 " 
Bien, je cherche à prendre une valeur int en secondes et à la convertir en hr: min: sec avant de `strcat ([c string], [time])` si je comprends bien, je vais devoir m'en tenir à `itoa` puisque je ne veux pas qu'il passe en série?
sprintf est un bon choix. J'ajouterai un exemple.
Ok, ça va marcher pour moi. comment faire pour obtenir la section `(PGM_P) F ("% 02d:% 02d:% 02d "),`? (plus précisément la partie `(PGM_P) F`)
Le F est documenté dans la documentation arduino PROGMEM. Le PGM_P change simplement le pointeur vers le bon type pour les fonctions de variante_P.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...