> Tous les forums > Forum Autres langages
 Programme crash
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
AntiZionist
  Posté le 28/12/2013 @ 19:23 
Aller en bas de la page 
Nouvel astucien

Bonjour tout le monde,

Ci-dessous l'exercice demander:

"Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier n. Le programme doit rechercher si n se trouve dans le tableau et afficher "L’entier n se trouve dans le tableau à l’indice i" ou "L’entier n ne se trouve pas dans le tableau"."

Voici le programme que j'ai écris:

[code]

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
int array[3];
int n = 0;
int i = 0;
//j'ai changer 10 entrer par 3 pour simplifier.

for(i=0; i < 3; i++){
printf("Enter New integers\n");
scanf("%d", &array[i]);

}
printf("Enter new Value\n");
scanf("%d", n);
if(n == i){
printf("The integer %d is in the table at index %d", n, array[i]);
}
else{
printf("The integer %d is not in the table.", n);
}
getch ();
return 0;
}

[/code]

Le programme apres l'entrer de la nouvelle valeur n, il donne l'erreur suivante:

Exercice-2.exe has stopped working
A problem caused the program to stop working correctly. Please close the program.

Pouvez-vous s'il vous plais m'aider à cmprendre d'où vient ce problème.

Merci d'avance.

Publicité
rdany62
 Posté le 29/12/2013 à 12:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

printf("Enter new Value\n");
scanf("%d", n);

Logique. scanf prend, en second paramètre, un pointeur vers la variable qui recevra l'entrée. Or, "n" est une variable de type int, initialisée à 0.

scanf, après que tu aie appuyé sur [Entrée] pour valider la saisie de "n", lit le contenu de "n" (qui vaut donc 0 car la valeur de "n" n'a pas changé depuis son initialisation) et cherche à écrire à l'adresse mémoire 0, qui n'est pas censée être utilisée par ton programme, c'est une violation d'accès, donc l'OS plante ton programme en y mettant fin avec un message d'erreur (pas très explicite d'ailleurs).

Pour corriger ce problème:

scanf("%d", &n);

Personnellement, quand je code, je vérifie au debuggeur que tout va bien, et quand j'ai un soucis, je mets un point d'arrêt à l'entrée de la fonction qui pose problème, puis je l'exécute en pas à pas jusqu'à trouver la source du problème et ainsi comprendre mon erreur et la corriger.

Voici un tuto pour le debugging sous Code::Blocks (PDF), et un second ici (HTML).

Sous Visual Studio, tu as toutes les infos sur le debugging d'application en code natif (C/C++) ici.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
89,99 €Disque dur externe portable Seagate Expansion 4 To USB 3.0 à 89,99 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur le disque dur externe portable Seagate Expansion d'une capacité de 4 To à 89,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 120 €. Ce disque dur externe portable au format 2,5 pouces dispose d'une interface USB 3.0 compatible USB 2.0. Une excellente affaire pour ce disque dur qui offre des débits de 115 Mo/s. Il n'est pas soudé et est donc démontable si vous souhaitez le réutiliser ailleurs (console, NAS, PC).


> Voir l'offre
11,99 €Micro clé USB 3.1 Sandisk Ultra Fit 64 Go à 11,99 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 64 Go qui passe à 11,99 €. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. 


> Voir l'offre
180 €Processeur AMD Ryzen 5 3600 à 180 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur le processeur AMD Ryzen 5 3600 qui passe à 180 € livré gratuitement via un coupon de réduction à activer sur la page du produit alors qu'on le trouve ailleurs à partir de 210 € ! Le processeur AMD Ryzen 5 3600 Wraith Spire (3.6 GHz / 4.2 GHz) fait partie des premiers processeurs pour PC gravés en 7 nm. Ses 6 coeurs et 12 threads, une fréquence jusqu'à 4.2 GHz et 35 Mo de GameCache le rendent polyvalent, il vous permet de tout faire rapidement et en toute fluidité. Une bonne affaire !


> Voir l'offre

Sujets relatifs
Programme spatial
Aide pour un programme simple en C++
Script pour lancer un programme en VBS
Imprimante HP C3180 et programme MS/ DOS
C++ Coder un programme: Le plus grand/petit nombre
Code source programme
Créer programme ou application pour tablette PC
Aide à la réalisation d'un programme
Programme de Pointage en Python
Programme .INI de démarrage automatique d’un DVD
Plus de sujets relatifs à Programme crash
 > Tous les forums > Forum Autres langages