Problem dans un jeu de tennis dans C
Résolu/Fermé
amine2610
Messages postés
9
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
23 décembre 2008
-
1 déc. 2007 à 21:32
Laul - 14 avril 2008 à 11:50
Laul - 14 avril 2008 à 11:50
A voir également:
- Problem dans un jeu de tennis dans C
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Jeu 94 degrés - Télécharger - Divers Jeux
- Jeux de moto: jeu de course 3d - Télécharger - Course
- Logo jeu - Télécharger - Jeux vidéo
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
1 déc. 2007 à 22:27
1 déc. 2007 à 22:27
Salut,
En fait tu as fait du buffer overflow sans le savoir. Je t'explique :
Tu utilises char C; et tu demandes à l'utilisateur : scanf("%s",&C). Le %s est utilisé pour les char*.
Ainsi, le programme va stocker le caractère donné par l'utilisateur dans C, \n et le \0 vont déborder et le \0 (qui vaut 0) va déborder pour s'écrire finalement dans la variable la plus proche dans le tampon, à savoir S2 (dernière variable locale déclarée). Du coup, ta variable est remise à 0 à chaque entrée de l'utilisateur.
Niveau correction :
Solution propre
Au lieu de mettre char C, tu mets int C; tu utilises des scanf("%d", &C) et dans les if(C=='2"), tu mets des if(C==2) à la place. De même pour C==1.
Solution très rapide (mais moche) ^^
Tu déclares une autre variable, par exemple int S3=0; Variable qui sert à rien, mais ton erreur de buffer overflow sera reporté dessus.
Cdt ;)
En fait tu as fait du buffer overflow sans le savoir. Je t'explique :
Tu utilises char C; et tu demandes à l'utilisateur : scanf("%s",&C). Le %s est utilisé pour les char*.
Ainsi, le programme va stocker le caractère donné par l'utilisateur dans C, \n et le \0 vont déborder et le \0 (qui vaut 0) va déborder pour s'écrire finalement dans la variable la plus proche dans le tampon, à savoir S2 (dernière variable locale déclarée). Du coup, ta variable est remise à 0 à chaque entrée de l'utilisateur.
Niveau correction :
Solution propre
Au lieu de mettre char C, tu mets int C; tu utilises des scanf("%d", &C) et dans les if(C=='2"), tu mets des if(C==2) à la place. De même pour C==1.
Solution très rapide (mais moche) ^^
Tu déclares une autre variable, par exemple int S3=0; Variable qui sert à rien, mais ton erreur de buffer overflow sera reporté dessus.
Cdt ;)
amine2610
Messages postés
9
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
23 décembre 2008
3 déc. 2007 à 22:22
3 déc. 2007 à 22:22
MERCI BEAUCOUP,
c'est vraiment trés gentille,
ca march
c'est vraiment trés gentille,
ca march