Bonjour.
j'ai essayé un petit script en console pour apprendre, mais il me fait une erreur que je ne comprend pas: le scripte est:certains reconaitrons peu-être l'origine
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <stdio.h> #include <stdlib.h> #include <math.h>//librairie fonctions math int main(int argc, char *argv[]) { long nombreDeVies = 50; // Au départ, le joueur a 5 vies int moinsvie=0; printf("Vous avez %ld vies\n", nombreDeVies); printf("**** B A M ****\n"); // Là il se prend un grand coup sur la tête nombreDeVies--; // Il vient de perdre une vie ! printf("Ah desole, il ne vous reste plus que %ld vies maintenant !\n\n", nombreDeVies); while (nombreDeVies!=0) { printf("combien voulez vous perdre de vies ?\n"); scanf("%ld",&moinsvie);// integrer des données nombreDeVies-=moinsvie; for (int i=0;i<moinsvie;i++)//affiche moinsvie blam printf("---BLAM ! ----\n"); printf("\n"); nombreDeVies=(nombreDeVies<0)? 0:nombreDeVies;//toujours mettre positif (au fait, ça aurais marché si j'avais juste déclaré nombreDeVies en unsigned ? if (nombreDeVies==0) printf("il ne vous reste plus de vies :D (quel sadique celui-la)\n\n"); else printf("il ne vous reste plus que %ld vies maintenant !\n\n", nombreDeVies); } system("PAUSE"); return 0; }![]()
le problèm est que quand je fait fonctionner le script normalement, tout va bien: il me retire le nombre de vie que je demande en faisant les nombres de "blam" corespondant.
mais quand je lui entre une valeur non entière ou non numérique, le script part en boucle sans executer le scanf en retirant la dernière valeur entrée (soit l'ancienne valeur de moinsvie.) (je vous laisse imaginer si j'ai entré 0).
j'aimerais bien savoir pourquoi il fait ça: je me serais attendu à ce qu'il plante, qu'il m'affiche une erreur, qu'il mette une valeur nulle ou autre à moinsvie, mais là, je ne comprend pas...![]()
si vous pouviez m'éclairer là dessus ...
merci![]()
Partager