bonjour,
comment fait-on pour convertir un chiffre (ex : double x = 125.0301; ) en une chaine de caractère ?
bonjour,
comment fait-on pour convertir un chiffre (ex : double x = 125.0301; ) en une chaine de caractère ?









s(n)printfEnvoyé par Emcy
c'est quoi ce n entre parenthese ? ça existe pas une fonction avec des parenthese...
C'est pas un printf que je veux : je ne veux pas ecrire sur l'ecran, je veux seulement faire une conversion....








Ca veut dire sprintf() ou snprintf(), la seconde etant plus securisee (on donne la taille de la chaine de caractere cible.Envoyé par Emcy
La cible de s(n)printf est une chaine de caractere, pas le flux standard comme printf() ou un flux quelconque comme fprintf(). C'est donc bien ce que tu veux.C'est pas un printf que je veux : je ne veux pas ecrire sur l'ecran, je veux seulement faire une conversion....
d'accord : merci pour vos reponses
j'ai une autre question, car je ne maitrise pas trop les fonction de type printf.
J'ai un chiffre entier, comment faire pour qu'il soit affiché obligatoirement sur 5 chiffres (ex: 152 => 00152)








N'hesite pas a lire la doc (pages man, par exemple) !Envoyé par Emcy
Formatteur "%05d".J'ai un chiffre entier, comment faire pour qu'il soit affiché obligatoirement sur 5 chiffres (ex: 152 => 00152)
stream signifie flux (et inversement).Envoyé par Emcy
Ce terme désigne un canal d'octets qui sert à communiquer avec l'extérieur.
Exemples :
Entrée : clavier, lecture disque, réception sur le port série ...
Sortie : ecran, ecriture disque, émission sur le port série ...
Sur un PC, le flux d'entrée standard (stdin) est généralement connecté au clavier par défaut. Les flux de sortie standard (stdout) et d'erreur (stderr) sont généralement connectés à l'écran par défaut.
d'accord, merci
aussi j'ai quelques problemes pour utiliser une fonction.
j'ai la fonction suivante qui me permet d'envoyer une chaine de caratère sur le port série :
reentrant UCHAR write_UART1( CHAR *pData, UINT16 nbytes ) ;
Commment faire pour l'utiliser ?
comme ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 double x = 105.0625; write_UART1( snprintf("%d", x) ) ;
Bonjour,Envoyé par Emcy
Ma foi, comme ta fonction write_UART1 prend deux paramètres et que tu ne lui en donnes qu'un seul, je vais te laisser répondre tout seul...
Par ailleurs, un (bref) coup d'oeil à la page man de la fonction snprintf() indique qu'elle ne s'utilise pas comme ça non plus...
oui mais comment je fais pour connaitre la taille de ma chaine ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 double x = 105.0625; write_UART1( &snprintf("%d", x) ,???) ;
Rapidement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 snprintf(ma_chaine, la_taille_maxi_de_la_chaine, "%d", x); write_UART1(ma_chaine, strlen(ma_chaine));
Je pense que ceci est mieux non ?Envoyé par Emcy
- Double -> %f pour printf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 double x = 105.0625; char buf[32]; int size = snprintf(buf,sizeof(buf),"%f",x); write_UART1(buf,size+1); //+1 pour le '\0' si necessaire
- snprintf retourne le nombre de caractères (sans le '\0')
Attention : Si tu as du mal avec ce genre de code, prend vite un livre de C, tu n'es sûrement pas encore prêt...
Jc









snprintf retourne le nombre de caractères nécessaires, donc tester cette valeur permet de savoir le buffer était trop petit. Mais un problème est qu'il y a dans la nature des implémentations non conformes sur ce point.Envoyé par fearyourself
Il faut cessr de programmer au hasard et lire la doc des fonctions (sprintf(), notamment). Si tu ne maitrises pas l'usage de telle ou telle fonction, prend un peu de temps à part pour tester, expérimenter, bref, maitriser... Ca ne s'invente pas et ça ne tombe pas du ciel. Il faut pratiquer.Envoyé par Emcy
merci, c'est bon, je commence à maitriser les chaines de caractères![]()
j'ai un probleme, snprintf n'est pas reconnu lors de la compil pourtant j'ai bien mis #include <stdio.h> => quand a sprintf, il est reconnu
Remarque : je programme sur un microcontrolleur
Curieux:Envoyé par Emcy
Enfin, il te suffit d'utiliser sprintf en faisant attention à la taille de la chaîne résultat.Envoyé par man








snprintf() est C99. Ton compilateur doit etre C90.Envoyé par Emcy
Partager