-1
votes

Pourquoi le scanef provoque-t-il que mon code fonctionne indéfiniment?

Lorsque j'essaie d'exécuter ce code, il fonctionne simplement indéfiniment. J'ai essayé d'utiliser scanf_s mais cela n'a rien changé. xxx


6 commentaires

J'ai couru ceci sur * Nix & Windows; Chaque fois que cela m'avait poussé pour 3 entrées et imprimé 2 sorties. Il a accroché si je frappe «Entrée» sans fournir un numéro, mais après avoir fourni un numéro et appuyez sur Entrée, elle a continué. Cela vous invite-t-il à des informations dans votre console?


S'il ne vous demande pas d'informations, vous pouvez ajouter fflush (stdout); après chaque invite. REMARQUE Il ne se bloque pas si vous appuyez sur «Entrée» sans fournir de numéro. Il ignore les espaces jusqu'à ce que vous entriez un numéro.


Si vous ne pouvez pas vous inquiéter de vérifier la valeur de retour ou les résultats de votre scanf , pourquoi devrions-nous vous soucier de vous aider?


Veuillez faire des recherches sur le comportement de scanf et que se passe-t-il si vous fournissez une entrée alphabétique lorsqu'un entier est attendu.


Avez-vous essayé d'entrer dans 3 numéros?


Vous ne validez pas votre entrée. Nettoyez également votre flux d'entrée si un type invalide est entré dans le flux. Ce que je suggère de prendre des données comme une chaîne avec des fgets et de la conversion.


3 Réponses :


0
votes

Il ne semble pas y avoir d'erreurs dans le code. J'ai essayé de l'exécuter sur Ubuntu et OnlineGDB. Le code fonctionne simplement bien. Il peut s'agir de la faute de votre compilateur.

Vous devriez vérifier ce que "scanf" revient. Vous pouvez le vérifier en utilisant ceci: - (ici d est votre entier) xxx

Si vous avez plusieurs conversions, vérifiez qu'ils sont tous terminés.


0 commentaires

1
votes

La première impression de votre code (et les autres):

setbuf(stdout, NULL);


2 commentaires

Il n'y a pas d'espace de noms en C, l'argument flux à setbuf est un fichier le pointeur le pointeur, pas un std :: fichier un


@ Joh1 corrigé. Les bibliothèques C ++ et C sont équivalentes pour ces fonctions, autre que l'espace de noms.



0
votes

Il peut y avoir un problème de problème que vous n'aurez peut-être pas une valeur en entrée.

Dans tous les autres cas, le code semble fonctionner correctement.


0 commentaires