[Arduino]Formatage d'un entier paramétrable
Bonjour à toutes et à tous,
Dans une méthode, je souhaite pouvoir formater un entier avec un nombre de zéros différents selon le cas. Le code est le suivant pour 3 chiffres:
Code:
1 2 3 4 5
| String aff(int x, char n) {
char str[16];
sprintf(str, "%03d", x);
return str;
} |
Je souhaite pouvoir remplacer le "%03d" par quelque chose qui intègre le paramètre n (qui, par ailleurs pourrait être un entier, un String, si cela simplifie les choses).
J'ai essayé différentes choses qui m'ont toutes données des erreurs de compilation. J'avoue que la manipulation des char n'est pas ma tasse de thé.
Merci d'avance pour votre aide.
Pierre
Merci "bousk" pour cette réponse
Merci "Bousk" pour cette réponse.
J'aurais dû préciser que je travaille dans l'environnement Arduino et que le bibliothèque std:: n'y existe pas.
J'ai essayé sprintf(str, "%0*d", width, nb) et sprintf(str, "%*d, width, nb) : cela me sort une ligne blanche.
Ce que j'aurais voulu faire est de remplacer "%03d" dans sprintf par : sprintf(str, monFormat, ma variable);
où monFormat est une expression qui peut prendre plusieurs valeurs. Par exemple :
Code:
1 2 3 4 5 6
| String aff(int x, String n) {
char str[16];
String monFormat = "%0"+n+"d";
sprintf(str, monFormat , x);
return str;
} |
Mais ça, ça donne une erreur de compilation. C'est là où je ne sais pas bien appréhender les String, les char, les Tableaux de char, les pointeurs sur .... Autrement dit, quelle forme doit prendre "monFormat" pour qu'il puisse être accepté par la méthode sprintf.
Merci de votre aide.
Pierre