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:
Il continue à fonctionner jusqu’à ce que je saisisse quelque chose dans la console de sortie.
Après avoir entré son affiche la déclaration printf et affiche “RUN FAILED”
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:
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).