Problème avec scanf
rosa
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je suis débutante en C ,j'ai ecrit un petit code qui permet de répéter l'opération d'entrer un caractère.le programme s'arrete lorsque l'utilisateur entre un zéro.
voila ce que j'ai ecrit
le problème c'est que la première fois il me donne la main pour faire entrer le caractère, la deuxième fois non, et puis il me donne la main pour donner le caractère, et la troisème fois non (lorsque je dis non, c'est q'il m'affiche deux fois successive "donner un caractère" sans me laisser le temps pour faire entrer le caractère)
est ce que quelqu'un peut m'aider à resoudre ce problème?
merci d'avance
je suis débutante en C ,j'ai ecrit un petit code qui permet de répéter l'opération d'entrer un caractère.le programme s'arrete lorsque l'utilisateur entre un zéro.
voila ce que j'ai ecrit
#include <stdio.h>
int main(){
char c;
while (c != '0'){
printf("donner un caractère\n");
scanf("%c",&c);
}
}
le problème c'est que la première fois il me donne la main pour faire entrer le caractère, la deuxième fois non, et puis il me donne la main pour donner le caractère, et la troisème fois non (lorsque je dis non, c'est q'il m'affiche deux fois successive "donner un caractère" sans me laisser le temps pour faire entrer le caractère)
est ce que quelqu'un peut m'aider à resoudre ce problème?
merci d'avance
A voir également:
- Problème avec scanf
- Scanf cmd - Guide
- "Scanf(&s,&n)" ✓ - Forum C
- Problème scanf (langage C) ✓ - Forum C
- Scanf segmentation fault ✓ - Forum Programmation
- Scanf float ✓ - Forum Programmation
1 réponse
1) tu dois initialiser c, car tu testes c!='0' alors que c n'a pas de valeur.
une alternative serait de faire une boucle do while.
2) lorsque tu entres des caractères ils sont ajoutés les uns à la suite des autres et tu les lis un par un. Le mieux pour comprendre est d'afficher ce que tu lis.
Exemple :
Supposons que je rentre le mot "test" d'un seul coup voici ce que ça va m'afficher :
Dans le cas où tu ne rentres "un seul" caractère tu appuies quand même sur la touche entrée et c'est pour ça que tu as le caractère 10 (c'est à dire le \n) qui décale tout...
une alternative serait de faire une boucle do while.
2) lorsque tu entres des caractères ils sont ajoutés les uns à la suite des autres et tu les lis un par un. Le mieux pour comprendre est d'afficher ce que tu lis.
Exemple :
#include "stdio.h"
int main()
{
char c;
do
{
printf("donner un caractere : ");
scanf("%c",&c);
printf("%d : %c\n",(int) c, c);
}
while (c != '0');
}
Supposons que je rentre le mot "test" d'un seul coup voici ce que ça va m'afficher :
donner un caractere : test 116 : t donner un caractere : 101 : e donner un caractere : 115 : s donner un caractere : 116 : t donner un caractere : 10 : donner un caractere :
Dans le cas où tu ne rentres "un seul" caractère tu appuies quand même sur la touche entrée et c'est pour ça que tu as le caractère 10 (c'est à dire le \n) qui décale tout...