Pendant que scanf! = EOF ou scanf == 1?
Ceteris paribus (bien formé données, les bonnes pratiques de mise en mémoire tampon et ce n'est pas), est-il une raison pourquoi je préfère boucle alors que le retour de scanf
est à 1, plutôt que de !EOF
? J'ai déjà lu cela quelque part, ou que ce soit, mais j'ai peut-être tort que de bien. Que d'autres gens pensent?
source d'informationauteur Dervin Thunk
Vous devez vous connecter pour publier un commentaire.
scanf
retourne le nombre d'éléments correctement converti ... ou EOF en cas d'erreur. Donc le code de l'état de la façon dont cela a du sens.Exemple artificiel
Edit: ajout d'un autre plus factice exemple
Dépend de ce que vous voulez faire malformé d'entrée - si votre motif de scan n'est pas trouvée, vous pouvez obtenir
0
retourné. Donc, si vous gérer ce cas, en dehors de la boucle (par exemple, si vous traiter de la même comme une erreur d'entrée), puis de comparer avec1
(ou cependant beaucoup d'éléments dans votre scanf appel).De http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
La seule façon d'être sûr que vous lisez le nombre d'éléments destinés à comparer la valeur de retour de ce nombre.