Je veux analyser une valeur et imprimer la valeur numérisée Cependant, le résultat imprimé m'a donné 1 au lieu de 9 comme indiqué ci-dessous. Pourquoi est-ce et comment puis-je résoudre ce problème? P>
3 Réponses :
Parce que Il suffit d'utiliser n code> Obtenez la substitution par la valeur de retour de scanf p>
scanaf ("% d", & n); code> si vous ne souhaitez pas le nombre d'éléments analysés attribués à
n code>. p>
Appelez P> scanf () code> ne renvoie pas la valeur qu'elle analyse, elle renvoie le nombre d'éléments lus avec succès. L'entrée
& n code> est l'adresse à votre tampon que
scanf () code> remplit avec ce qu'il numérisé.
scanf("%d", &n);
pourquoi ma fonction de printf ne renvoie pas la valeur numérisée correcte dans le Code C suivant? P>
Vous vous trompez. Le
printf code> appel p>
xxx pré> sortira la valeur correcte renvoyée par l'appel de scanf. P>
selon le (7.21.6.4 La fonction scanf) p>
3 La fonction Scanf renvoie la valeur de la macro eof si une entrée L'échec survient avant la première conversion (le cas échéant) est terminé. Sinon, la fonction Scanf renvoie le nombre d'éléments d'entrée attribués, strong> pouvant être moins que prévu, voire zéro, dans le événement d'une défaillance de correspondance précoce. P> blockquote>
comme cet appel de scanf p>
xxx pré> attribué qu'un seul élément, sa valeur de retour est égale à 1. Cette valeur que vous avez émise dans le prochain appel de printf p>
xxx pré> Si vous souhaitez émettre l'élément attribué dans l'appel de Scanf, ne le remplacez pas avec la valeur de retour de l'appel scanaf comme par exemple p>
if ( scanf("%d",&n) == 1 ) printf("%d",n);