Sprintf

Résolu
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008 - 11 déc. 2008 à 17:59
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008 - 12 déc. 2008 à 10:18
Bonjour a tous,

J'aimerais s'il vous plaît savoir comment est-ce que l'on se sert de g% dans sprintf()
merci de votre reponse

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
A voir également:

22 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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...
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
11 déc. 2008 à 18:03
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...
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 18:17
Rebonjour, je suis desolé, mais je n'ai pas tres bien compris comment est-ce que l'on utilisait sprintf(), encore merci de la reponse
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
11 déc. 2008 à 18:24
Tu sais utiliser printf()? Si oui, c'est pareil, mais dans une chaine de caractères.Attention, il faut que ta chaine soit allouée

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 18:27
Donc en theorie, si je comptends bien, on peut seulement l'utiliser avec une variable de type char?
merci encore de ta reponse

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 déc. 2008 à 19:12
salut

char * pas char...
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 19:57
desole de te poser cette qusetion, mais c koi al différence(je ne sais pas), merci pr la reponse

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
11 déc. 2008 à 20:10
char = 1 caractère
char* = pointeur vers chaine de caractères

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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).
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 08:13
Je vous remercie beaucoup de votre réponse, je crois que ca ma beaucoup aidé.

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 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
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 déc. 2008 à 08:30
non... sprintf ne s'utilise pas comme ca...

tu veux faire quoi avec ta ligne ?
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 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
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 déc. 2008 à 08:38
si c'est pour l'affichage, pourquoi t'utilises sprintf et pas printf ?
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 08:54
dsl, jeme suios gourré je voulais dire printf tout court

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 09:52
g essaye, mais lorsque je fais printf("%s", buffer);
ca marche pas

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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...
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 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
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 10:12
Merci,mais pr le sleep, je ,lavais mis aussi, longtemps pour voir ou était lerreur, c pour ca
en tout cas, merci

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
nicolasyon1992 Messages postés 17 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 12 décembre 2008
12 déc. 2008 à 10:14
Je te remercie enormément, ca marche impec mtn,
#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("%lf", &a);
  sprintf(buffer,"%g",a);
  printf("%s", buffer);
  system("PAUSE");
}

Einstein
Deux choses sont infinies la connerie humaine, et l'univers
0
Rejoignez-nous