J’essaie de lire une valeur double
façon continue de l’utilisateur à l’aide de scanf
.
Code:
printf("Enter A value: \n"); double input; int result = scanf("%f", &input); printf("INPUT: %f\n", input);
La sortie est
INPUT: 0.000
Vous avez menti au compilateur: lors de l’parsing, %f
indique que vous fournissez un pointeur à float
. Mais vous avez fourni un pointeur pour double
.
Pour résoudre ce problème, utilisez %lf
ou déclarez l’ input
tant que float
.
Notez qu’il existe une asymésortinge avec les formats printf
, qui utilise %f
pour les arguments float
et double
. Cela fonctionne car les arguments de printf
sont promus à double
(et ne sont pas des pointeurs).
J’essaie de lire une valeur double de façon continue de l’utilisateur à l’aide de scanf.
Pour ce faire, vous avez besoin d’une boucle, comme suit:
while(scanf("%lf", &input) == 1) { //code goes here... printf("INPUT: %lf\n", input); //code goes here... }
Notez que, comme le type d’ input
primitif est double
, vous devez utiliser %lf
au lieu de %f
( %f
utilisé pour float
).