Controle des caracteres dans une boucle

simon -  
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
A voir également:

5 réponses

CaporalDead Messages postés 216 Statut Membre 6
 
Je dis surement une bêtise mais bon, essaie avec les valeurs hexa des touches peut être.
0
artragis Messages postés 510 Statut Membre 146
 
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
0
Mahmah Messages postés 497 Statut Membre 125
 
Bonjour,

if(a=1)

while(t=1);

L'opérateur d'égalité est ==, un = simple est une affectation.

M.
0
tchsimons Messages postés 207 Statut Membre 14
 
c'est une ereur
0
simon
 
excuse moi je ne comprend pas "mettre la variable a en string" comment cela s'utilise?
0
artragis Messages postés 510 Statut Membre 146
 
il y a plusieurs types de variables : entier(integer) reel simple(single) reel double (double) chaine de caractère (string)
en somme au départ tu dois déclarer ta variable en tant que chaine (string) puis dans tes boucles tu ajoute des guillemet aux "1", "0". SEULEMNT POUR LA VARIABLE a.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mahmah Messages postés 497 Statut Membre 125
 
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 ?)
0