J'essaie de lire l'entrée d'un clavier que j'utiliserai pour créer un ensemble de multiplications. Si j'accepte l'entier à utiliser, le programme fonctionne bien, cependant, lorsque je laisse l'utilisateur entrer dans son propre numéro, le programme se bloque et affiche une erreur sur une violation d'accès.
Je suis sûr que c'est quelque chose de simple, mais comme je suis assez Nouveau à C Je ne suis pas totalement sûr de tous les principes à suivre lors de l'utilisation de la langue. p> Remarque: je définis la valeur initiale de plusieurs sur 0 sinon je rencontre un Erreur lors de la tentative d'utilisation d'une valeur inintitualisée. p> p>
5 Réponses :
scanf("%d", & multiple);
Changer à p>
Le formulaire correct est p> scanf code> attend un pointeur sur la variable à définir.
Juste pour expliquer pourquoi em> cela s'est passé (comme NEIL a déjà expliqué ce qui l'a causait), Scanf attendait une adresse à écrire. Lorsque vous avez transmis la valeur em> de "multiple", il a été interprété comme une adresse, spécifiquement adressant 0 comme c'était la valeur à l'époque. P>
La raison en est que Scanf peut définir la valeur de votre variable à la valeur de l'entrée. Si vous ne passez pas un pointeur, vous passez une copie de la valeur de la variable. Lorsque vous passez un pointeur, vous passez une copie de la valeur du pointeur em>, afin que Scanf écrit sur cette même adresse de mémoire, il peut modifier la valeur de la variable. P>
Vous ne passez pas l'adresse de la variable pour plusieurs pour stocker le résultat de Ceci indique à l'exécution, de lire un entier et de le placer dans l'adresse dans une coque noix, une variable forte> adresse forte> est indiquée par J'espère que cela aide,
Meilleures salutations,
Tom. P> scanf code> d'où l'exigence de scanf ("% d", et plusieurs); code>. p>
& code> doit être utilisé. Sans cela, vous avez une erreur d'exécution car vous passez la valeur de la variable mais l'exécution ne sait pas quoi faire avec elle. P>
& code>. p>
Merci pour l'explication détaillée, j'ai voté votre réponse
+1 de moi comme c'est une pierre d'achoppement anticipée lors de l'utilisation de Scanf lors de l'apprentissage de C.