Scanf ne lit pas en double

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 ).