CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Bug Codeblock

maxime41010
maxime41010
Niveau 4
30 août 2012 à 21:02:36

Bonjour,
J'ai un problème avec codeblock ! (encore un !)
Voilà que fais build&run, la fenêtre s'ouvre, mais quand j'essaie d'entrer un chiffre ou n'importe quoi avec scanf, j'ai droit au magnifique "nomdufichier.exe a cessé de fonctionner, Windows recherche une solution..."
Sauriez-vous résoudre mon problème ? :merci:

godrik
godrik
Niveau 30
30 août 2012 à 21:07:05

C'est certainmeent un bug dans ton code et pas un bug dans codeblocks. Ca ressemble a une erreur de segmentation ce que tu presentes. Poste ton code sur un wall http://wall.deblan.fr/ si tu veux que l'on jette un oeil.

Tikim
Tikim
Niveau 21
30 août 2012 à 22:23:31

En général ça te fais ce genre d'erreur quand tu essayes de modifier une case mémoire non allouée pour ton programme. Donc très souvent il s'agit d'un tableau, et ton programme veut écrire à la case suivant la dernière ou précédant la première. L'OS (je crois que c'est l'OS) refuse, et ferme le programme.

Ton chiffre, tu le mets où ?

ffx12
ffx12
Niveau 10
31 août 2012 à 00:19:54

En effet je pense aussi que sa vien une case memoire non allouee
Poste ton code pour qu on n y voient plus clair

maxime41010
maxime41010
Niveau 4
02 septembre 2012 à 15:09:48

Merci, mais qu'est ce qu'une case mémoire non alloué ?

  1. include <stdio.h>
  2. include <stdlib.h>

int main()
{
int nombreEntre = 0, nombreEntre2 = 0, nombreEntre3 = 0;

printf("Quel operation souhaitez-vous faire ?\n ");
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Multiplication\n");
printf("4.Division\n");
printf("5.Modulo\n\n");
printf("Tapez votre choix ci dessous :");
scanf("%d", nombreEntre);

printf("Tapez ensuite les deux chiffres de votre addition/soustraction...\n");
printf("Chiffre 1\n");
scanf("%d", nombreEntre2);

printf("Chiffre 2\n");
scanf("%d", nombreEntre3);

switch (nombreEntre)
{
case 1:
("nombreEntre2 + nombreEntre3");
break;
case 2:
("nombreEntre2 - nombreEntre3");
break;
case 3:
("nombreEntre2 * nombreEntre3");
break;
case 4:
("nombreEntre2 / nombreEntre3");
break;
case 5:
("nombreEntre2 % nombreEntre3");
default :
("C'est marrant, hein ? ^^");
}
}

hyrulink2
hyrulink2
Niveau 7
02 septembre 2012 à 15:54:40

Le problème c'est les scanf, il faut que tu donne l'adresse de la variable comme ça:
scanf("%d", &nombreEntre);

Note le & qui permet de donner l'adresse de la variable.

JujuDredd
JujuDredd
Niveau 10
02 septembre 2012 à 17:35:47

Avec de bonnes options de compilation tu aurais eu un warning qui te signale que tu as mis n'importe quoi dans ton scanf...

maxime41010
maxime41010
Niveau 4
02 septembre 2012 à 17:41:46

Merci, j'avais donc oublié le & !

godrik
godrik
Niveau 30
02 septembre 2012 à 18:26:19

Le commentaire de jujudredd est tres important! Si tu avais active tous les warnings dans ton environement de programmation, tu aurais ete prevenu de cette erreur des le debut.

maxime41010
maxime41010
Niveau 4
05 septembre 2012 à 13:58:26

sinon, vous sauriez comment afficher le résultat pour mon code ?

Tikim
Tikim
Niveau 21
05 septembre 2012 à 14:07:44

Au début tu déclares "int resultat = 0;"

Et le problème vient de ton switch : il fait rien. Si tu écris "("nombreEntre2 + nombreEntre3"); " si je me trompe pas, ça ne fait rien. D'ailleurs ça m'étonne que ça compile.

En gros tu pourrais faire un truc du genre :

switch(nombreentre)
{
case 1:
resultat = nombreEntre1 + nombreentre2;
printf("L'addition donne : %d\n", resultat);
break;
case2:
...

Ou tout simplement dans chase "case" : printf("Le resultat de l'addition donne : %d\n", nombreEntre2+nombreEntre3);

Et ainsi de suite pour les autres. Je crois que ça marche en C.

Tikim
Tikim
Niveau 21
05 septembre 2012 à 14:17:18

D'ailleurs je viens de copier vite fait ton code, et j'obtiens des warnings : statement with no effects.

Et ce, à chaque ligne d'instruction des différents cas de ton switch. Tu devrais lire les warnings, c'est souvent là que tu trouves ce qui ne marche pas dans ton programme.

Bref je t'ai réécrit le code de manière à ce qu'il fonctionne, même s'il a pas beaucoup d'intérêts :o))

  1. include <stdio.h>
  2. include <stdlib.h>

int main()
{
int nombreEntre = 0, nombreEntre2 = 0, nombreEntre3 = 0;

printf("Quel operation souhaitez-vous faire ?\n ");
printf("1.Addition\n");
printf("2.Soustraction\n");
printf("3.Multiplication\n");
printf("4.Division\n");
printf("5.Modulo\n\n");
printf("Tapez votre choix ci dessous :");
scanf("%d", &nombreEntre);

printf("Tapez ensuite les deux chiffres de votre addition/soustraction...\n");
printf("Chiffre 1\n");
scanf("%d", &nombreEntre2);

printf("Chiffre 2\n");
scanf("%d", &nombreEntre3);

switch (nombreEntre)
{
case 1:
printf("nombreEntre2 + nombreEntre3 = %d\n", nombreEntre2+nombreEntre3);
break;
case 2:
printf("nombreEntre2 - nombreEntre3 = %d\n", nombreEntre2-nombreEntre3);
break;
case 3:
printf("nombreEntre2 * nombreEntre3 = %d\n", nombreEntre2*nombreEntre3);
break;
case 4:
printf("nombreEntre2 / nombreEntre3 = %d\n", nombreEntre2/nombreEntre3);
break;
case 5:
printf("nombreEntre2 % nombreEntre3", nombreEntre2%nombreEntre3);
break;
default :
printf("C'est marrant, hein ? ^^");
break;
}
}

JujuDredd
JujuDredd
Niveau 10
05 septembre 2012 à 19:39:15

"Le commentaire de jujudredd est tres important!"

Merci, ça me fait très plaisir :hap:

maxime41010
maxime41010
Niveau 4
20 septembre 2012 à 17:45:54

Merci, mais j'ai un autre problème: Comment est ce que je pourrais afficher le résultat de nombreEntre2 (+-/*) nombreEntre3 ?

Tikim
Tikim
Niveau 21
20 septembre 2012 à 19:54:08

C'est exactement ce que j'ai fais dans le message précédent.

Tu fais :

printf("nb1 + nb2 = %d", nb1+nb2);

Tu peux faire l'addition directement dans le printf. Sinon tu met le résultat dans une troisième variable :

int resultat;
resultat = nb1 + nb2;
printf("nb1 + nb2 = %d", resultat);

Mais je l'ai déjà écrit...

maxime41010
maxime41010
Niveau 4
21 septembre 2012 à 19:34:12

merci !
J'ai vu que tu l'avais déjà écrit, mais j' avais pas compris :-) .

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment