Programme simple en C avec variable "char" qui ne fonctionne pas
Résolu
maxime121294
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
maxime121294 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
maxime121294 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis en 1ère année d'informatique et je ne comprends pas, après de long moments de recherche, pourquoi ce programme que j'ai écrit ne fonctionne pas correctement. C'est un programme simple qui affiche les nouvelles coordonnées d'un point selon le déplacement que demande l'utilisateur et selon les coordonnées également entrées pas celui-ci. Je pense que l'erreur est bête mais pourtant je ne la trouve pas. Merci de bien vouloir m'aider :)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x, y, boucle=1;
char deplacement;
while(boucle==1)
{
printf("Entrez l'abscisse du point: ");
scanf("%d", &x);
printf("Entrez l'ordonnee du point: ");
scanf("%d", &y);
printf("\nVers quelle direction voulez-vous deplacer le point ?\n\n");
printf("Vers le haut (h ou H)\n");
printf("Vers le haut (b ou B)\n");
printf("Vers le haut (g ou G)\n");
printf("Vers le haut (d ou D)\n\n");
scanf("%c%*c", &deplacement);
printf("\n");
switch(deplacement)
{
case 'h':
case 'H':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", x, ++y);
break;
case 'b':
case 'B':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", x, --y);
break;
case 'g':
case 'G':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", --x, y);
break;
case 'd':
case 'D':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", ++x, y);
break;
}
printf("Voulez-vous deplacer un nouveau point ?\n\n");
printf("1. Oui\n");
printf("2. Non\n\n");
scanf("%d", &boucle);
printf("\n");
while(boucle!=1 && boucle!=2)
{
printf("Saisie incorrecte. Veuillez selectionner l'un des 2 chiffres correspondant aux differents choix.\n\n");
scanf("%d", &boucle);
printf("\n");
}
}
return(0);
}
<config>Windows 7 / Chrome 22.0.1229.94</config>
Je suis en 1ère année d'informatique et je ne comprends pas, après de long moments de recherche, pourquoi ce programme que j'ai écrit ne fonctionne pas correctement. C'est un programme simple qui affiche les nouvelles coordonnées d'un point selon le déplacement que demande l'utilisateur et selon les coordonnées également entrées pas celui-ci. Je pense que l'erreur est bête mais pourtant je ne la trouve pas. Merci de bien vouloir m'aider :)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x, y, boucle=1;
char deplacement;
while(boucle==1)
{
printf("Entrez l'abscisse du point: ");
scanf("%d", &x);
printf("Entrez l'ordonnee du point: ");
scanf("%d", &y);
printf("\nVers quelle direction voulez-vous deplacer le point ?\n\n");
printf("Vers le haut (h ou H)\n");
printf("Vers le haut (b ou B)\n");
printf("Vers le haut (g ou G)\n");
printf("Vers le haut (d ou D)\n\n");
scanf("%c%*c", &deplacement);
printf("\n");
switch(deplacement)
{
case 'h':
case 'H':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", x, ++y);
break;
case 'b':
case 'B':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", x, --y);
break;
case 'g':
case 'G':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", --x, y);
break;
case 'd':
case 'D':
printf("Les coordonnees du point deviennent:\n\nx=%d\ny=%d\n\n", ++x, y);
break;
}
printf("Voulez-vous deplacer un nouveau point ?\n\n");
printf("1. Oui\n");
printf("2. Non\n\n");
scanf("%d", &boucle);
printf("\n");
while(boucle!=1 && boucle!=2)
{
printf("Saisie incorrecte. Veuillez selectionner l'un des 2 chiffres correspondant aux differents choix.\n\n");
scanf("%d", &boucle);
printf("\n");
}
}
return(0);
}
<config>Windows 7 / Chrome 22.0.1229.94</config>
A voir également:
- Programme simple en C avec variable "char" qui ne fonctionne pas
- Iphone 14 simple - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Programme demarrage windows - Guide
- Simple pdf - Télécharger - PDF
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
Bonjour,
J'ai pas tout lu mais : scanf("%c%*c", &deplacement);
Avant, tu as un scanf("%d",...), donc tu as un \n dans le buffer clavier.
Il faut donc penser à faire un getchar() juste avant ton scanf("%c%*c", &deplacement);
J'ai pas tout lu mais : scanf("%c%*c", &deplacement);
Avant, tu as un scanf("%d",...), donc tu as un \n dans le buffer clavier.
Il faut donc penser à faire un getchar() juste avant ton scanf("%c%*c", &deplacement);
Tout d'abord merci pour ta réponse, mais je ne comprends pas tout à fait... En fait, je n'ai pas appris a utiliser getchar() donc je pense que mon erreur ne doit pas être corrigée de la sorte. De plus, je ne vois pas pourquoi tu dis qu'un \n est dans le buffer clavier tandis que le scanf("%d") est un int et non un char. Alors en théorie il ne devrait rien y avoir d'enregistrer dans le buffer clavier non ?
Lorsque tu as scanf("%d", ...); le programme va lire le buffer clavier qui est initialement vide. Il va donc attendre que tu saisisses un nombre. Pour saisir le nombre dans la variable, tu dois le valider par la touche '\n'.
Ensuite ton programme va lire le nombre saisi et le stocker dans la variable. Et il va aussi laisser le \n.
Lorsque tu vas utiliser scanf("%c...",...); il va tenter de lire le buffer clavier et récupérer le \n. Là se trouve l'erreur.
Si tu n'as pas appris getchar(), utilise simplement scanf("%*c");
D'ailleurs, à la place de scanf("%c%*c", &deplacement); tu peux même mettre :
scanf("%*c%c", &deplacement);
Ensuite ton programme va lire le nombre saisi et le stocker dans la variable. Et il va aussi laisser le \n.
Lorsque tu vas utiliser scanf("%c...",...); il va tenter de lire le buffer clavier et récupérer le \n. Là se trouve l'erreur.
Si tu n'as pas appris getchar(), utilise simplement scanf("%*c");
D'ailleurs, à la place de scanf("%c%*c", &deplacement); tu peux même mettre :
scanf("%*c%c", &deplacement);