Controle des caracteres dans une boucle
simon
-
Mahmah Messages postés 497 Statut Membre -
Mahmah Messages postés 497 Statut Membre -
Bonjour,
observez cette boucle que j'ecris souvent pour proposer à mes utilisateus de relancer mes programmes
int a=3; t=1
do
{
.
.
.
[corp du programme]
.
.
.
do
{
printf("voulez vous recommencer ? (tapez 1 pour oui ou 0 pour non");
scanf("%d",&a);
}
while((a!=0)||(a!=1));
if(a=1)
t=1;
}
while(t=1);
ceci suppose que la boule ne fonctionne q'avec 1 ou 0 mais lorsqu 'on insere un caractere alphabetique, j'ai une sorte de boucle infinie. comment cotroler ces caractères pour qu'il ne dérange plus mes programmes
observez cette boucle que j'ecris souvent pour proposer à mes utilisateus de relancer mes programmes
int a=3; t=1
do
{
.
.
.
[corp du programme]
.
.
.
do
{
printf("voulez vous recommencer ? (tapez 1 pour oui ou 0 pour non");
scanf("%d",&a);
}
while((a!=0)||(a!=1));
if(a=1)
t=1;
}
while(t=1);
ceci suppose que la boule ne fonctionne q'avec 1 ou 0 mais lorsqu 'on insere un caractere alphabetique, j'ai une sorte de boucle infinie. comment cotroler ces caractères pour qu'il ne dérange plus mes programmes
A voir également:
- Controle des caracteres dans une boucle
- Caractères spéciaux - Guide
- Fan controle - Télécharger - Optimisation
- Caracteres speciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
5 réponses
je ne comprends pas pourquoi une telle boucle. un simple If aurait été plus simple. aprèsje me trompe peut être.
mais bon... sinon le plus simple ne serait-il pas de mettre la variable a en string, ainsi pas de bug. car en effet là tu établies une convertion implicite d'une chaine en integer. et si ta chaine est une lettre, bah ça bug. le programme ne sait pas quoi faire... tant dis qu'avec un string il vérifiera que c'est la chaine "0" ou la chaine "1" pas plus... après je sais pas
mais bon... sinon le plus simple ne serait-il pas de mettre la variable a en string, ainsi pas de bug. car en effet là tu établies une convertion implicite d'une chaine en integer. et si ta chaine est une lettre, bah ça bug. le programme ne sait pas quoi faire... tant dis qu'avec un string il vérifiera que c'est la chaine "0" ou la chaine "1" pas plus... après je sais pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est une bien grande machinerie pour si peu. En plus il faudra une fonction de comparaison de chaînes.
Une solution plus légère serait d'utiliser un seul caractère au lieu de toute une chaîne.
Mais la solution la plus logique est d'utiliser des unsigned int (déjà, à moins que les choix puissent être négatifs) et de vérifier l'état de la lecture via la valeur de retour de scanf. C'est quand même à ça qu'elle sert...
M.
(les simples = dans les conditions sont corrigés ?)
Une solution plus légère serait d'utiliser un seul caractère au lieu de toute une chaîne.
Mais la solution la plus logique est d'utiliser des unsigned int (déjà, à moins que les choix puissent être négatifs) et de vérifier l'état de la lecture via la valeur de retour de scanf. C'est quand même à ça qu'elle sert...
M.
(les simples = dans les conditions sont corrigés ?)