0
votes

Pourquoi ma fonction Printf ne renvoie-t-elle pas la valeur numérisée correcte dans le code C suivant?

Je veux analyser une valeur et imprimer la valeur numérisée xxx

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?

Entrez la description de l'image ici


0 commentaires

3 Réponses :


3
votes

Parce que n Obtenez la substitution par la valeur de retour de scanf

Il suffit d'utiliser scanaf ("% d", & n); si vous ne souhaitez pas le nombre d'éléments analysés attribués à n .


0 commentaires

2
votes

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

Appelez P>

scanf("%d", &n);


0 commentaires

2
votes

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


0 commentaires