BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 12 déc. 2008 à 10:09
ok. Avec du code, c'est plus facile pour discuter.
2 possibilités:
- soit tu mets a en double, et donc, dans ton print(), il faut utiliser %lf plutôt que %f (je te revoies au lien pour les raisons)
- soit tu le mets en float et tu laisse ton printf tel quel
Remarques:
- char buffer[100]; plutôt que unsigned char
- sleep(100000) --> tu attends 100 secondes!!
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 12 déc. 2008 à 03:38
Salut,
Avec printf() le résultat est affiché à l'écran.
Avec sprintf() le résulat est mis dans un buffer sous forme de chaine de caractères.
Il ne s'agit pas de g% mais plutot de %g. Ce spécificateur est utilisable avec les nombres à virgule flottante ou avec la notation exponentielle. A la différence de %f (ou %e) %g permet de ne prendre en compte que les chiffres utiles d'un nombre. Exemple:
char buffer[100];
float nombre=(float)1/2;
sprintf(buffer,"%f",nombre); // buffer sera "0.500000"
sprintf(buffer,"%g",nombre); // buffer sera "0.5"
Si on veut plus de précision on utilise un double:
double nombre=(double)1/512;
sprintf(buffer,"%.16f",nombre); // buffer sera "0.0019531250000000"
sprintf(buffer,"%.16g",nombre); // buffer sera "0.001953125"
Le .16 devant le spécificateur permet de choisir le nombre maximal de chiffres apès la virgule (ici 16).
nicolasyon1992
Messages postés17Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention12 décembre 2008 12 déc. 2008 à 08:20
Par contre pour faire apparaitre le buffer, on fait sprintf("%s",buffer); ?
merci de la reponse
Einstein
Deux choses sont infinies la connerie humaine, et l'univers
nicolasyon1992
Messages postés17Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention12 décembre 2008 12 déc. 2008 à 08:34
En gros, l'utilisateur donne un nombre(c une partie du programme), et ensuite le programme l'affiche exactement de la même manière, par exemple:
2.3, et le programme affiche 2.3 et non 2.30000000
merci
Einstein
Deux choses sont infinies la connerie humaine, et l'univers
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 12 déc. 2008 à 09:55
Y'a-t-il quelquechose dans buffer?
Je te reposte le lien précédent, pour voir l'usage de la fonction printf()
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/printf.3.html @+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
nicolasyon1992
Messages postés17Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention12 décembre 2008 12 déc. 2008 à 10:01
En théorie ui, je fait comme il a été dit, mais j'envoie la partie du programme qui n'est pas du tout terminé:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
int main(int argc, char *argv[])
{ unsigned char buffer[100];
int i;
double a;
printf("donne a:");
scanf("%f", &a);
sprintf(buffer,"%g",a);
printf("%s", buffer);
sleep(100000);
}
merci encore pr la reponse
Einstein
Deux choses sont infinies la connerie humaine, et l'univers