Bug que je ne comprend pas . . .
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:
Code:
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;
} |
certains reconaitrons peu-être l'origine:roll:
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;)