Les programmes avec le scanf ne fonctionnent pas correctement dans NetBeans

J’ai installé NetBeans 7.0.1 aujourd’hui. Lorsque j’essaie d’exécuter le programme C avec “scanf“, cela donne des erreurs étranges

Voici ce que j’ai écrit:

Programme

Il continue à fonctionner jusqu’à ce que je saisisse quelque chose dans la console de sortie. entrez la description de l'image ici

Après avoir entré son affiche la déclaration printf et affiche “RUN FAILED”

entrez la description de l'image ici

Quelqu’un peut-il me dire que dois-je faire pour remédier à la situation?

Votre printf n’est pas vidé, il ne s’affiche donc pas jusqu’à la fin du programme.

Vous ne renvoyez pas de valeur de main () de manière explicite, le résultat de scanf () est donc renvoyé, c’est-à-dire 1, interprété comme un échec du programme.

Oui, j’ai le même problème avec vous et les solutions dans les réponses ne fonctionnent pas sur ma machine. Après avoir cherché, je comprends que ce problème concerne la section terminal / console interne de Netbean. La console interne ne peut pas exécuter la fonction scanf. Utilisez donc un terminal externe pour votre projet. Pour faire ça:

  • D’abord, faites un clic droit sur votre projet et sélectionnez Propriétés.
  • Dans cette fenêtre, sélectionnez l’onglet “Exécuter” en bas.
  • Dans “Type de console”, remplacez ce type de console de “terminal interne” par “terminal externe”.

C’est tout.

Vous devez renvoyer 0 à la fin de main, sinon cela suppose une erreur.

Vous ne renvoyez pas 0 , ce qui indique que le système d’exploitation a été arrêté avec succès et vous ne mettez pas un \n printf sur votre printf , ce qui printf la ligne de s’imprimer (stdin est mis en mémoire tampon):

 #include  int main() { int n; printf("Enter the number:\n"); scanf("%d", &n); return 0; } 

Un programme AC sans valeur de retour entraînera un comportement indéfini (considéré à l’unanimité comme une mauvaise chose ©). Le compilateur est autorisé à laisser libre cours à ce qu’il retourne ici, il semble renvoyer le résultat de scanf () mais il pourrait renvoyer une entropie atmosphérique pour tous les soins C Standard.

En ce qui concerne la ligne qui n’imprime pas, c’est que vous utilisez printf () sur un terminal en mémoire tampon; vous voudrez donc append \ n à la fin. La raison de cela renvoie aux anciennes méthodes Unix qui ont longtemps été oubliées par tous, à l’exception des plus fous des gourous Unix.

Pour ce qui est de rien ne se passe tant que vous n’avez pas saisi quelque chose, c’est que scanf () bloque jusqu’à ce que l’entrée soit reçue, au cas où vous ne le sauriez pas déjà. Il est possible d’utiliser des appels d’E / S non bloquants, mais je ne suis pas sûr que ce soit dans le cadre de votre question. (veuillez définir “faites-le correctement”).

Ajoutez un code de retour. main() renvoie un entier, ajoutez donc return 0; au bas de votre fonction main() . À l’heure actuelle, la valeur renvoyée est erronée et généralement, toute valeur autre que 0 indique un échec.

Aussi, vous pourriez envisager de le faire:

 int main(void) 

pour être plus explicite (bien que cela ne changera rien ici).