Switch + Répétition
Résolu
URK
-
URK -
URK -
Bonsoir à tous,
Voilà pour un excercice j'aimerai utilisé le switch mais j'ai un mauvais affichage, je vous file la partie du code avec le switch
et par exmple lorsque je demande tout bêtemenent de initialiser mon tableau il me met ceci :
Je comprends pas pk il me le met deux fois et que lors de la première il mette le switch default :(
Merci en tout cas de votre aide.
Voilà pour un excercice j'aimerai utilisé le switch mais j'ai un mauvais affichage, je vous file la partie du code avec le switch
do {
puts("\n\nChoose what u want\ni : Initialisation\nd : Display\na : Add\ne : Exit");
scanf("%c", &clavUtil);
switch (clavUtil) {
case INIT: gmInit(&dRC);
break;
case ADD: puts("Put Ur Error Message\n");
scanf("%s", &sMsg);
gmAdd(sMsg, &dRC);
if (dRC == GM_FULL) {
puts("Error : The Table's Full");
} else if (dRC == GM_ERROR) {
puts("Error : Program 's Closing");
EXIT_FAILURE;
}
break;
case DISPLAY: gmDisplay(&dRC);
break;
case EXIT: return 0;
default: puts("/n Veuillez entrez une lettre correspondante");
}
} while (clavUtil != EXIT);
et par exmple lorsque je demande tout bêtemenent de initialiser mon tableau il me met ceci :
Table Initialisation Init Ok Choose what u want I : Initialisation D : Display A : Add E : Exit i Init Ok Choose what u want I : Initialisation D : Display A : Add E : Exit /n Veuillez entrez une lettre correspondante Choose what u want I : Initialisation D : Display A : Add E : Exit
Je comprends pas pk il me le met deux fois et que lors de la première il mette le switch default :(
Merci en tout cas de votre aide.
A voir également:
- Switch + Répétition
- Android switch - Accueil - Android
- Smart switch pc - Télécharger - Divers Bureautique
- Switch off - Télécharger - Divers Utilitaires
- Switch 2 - Accueil - Jeu vidéo
- Logiciel switch - Télécharger - Conversion & Extraction
1 réponse
Salut,
Normal, c'est à cause du \n qui est stocké dans le buffer clavier et qui répond à la question à ta place. D'où ton problème.
A la place de ton scanf("%c",&clavUtil); fais :
Cdlt
Normal, c'est à cause du \n qui est stocké dans le buffer clavier et qui répond à la question à ta place. D'où ton problème.
A la place de ton scanf("%c",&clavUtil); fais :
char reponse[3]; //pour initialiser un nouveau tableau ... fgets(reponse, sizeof reponse, stdin); //a la place de scanf clavUtil=reponse[0];
Cdlt
tu serais m'expliquer en deux mots pourquoi ça fait ça (il stock le caractère + un espace ?)
et pour le add y a encore la même erreur mais je suppose que c'est à cause du scanf aussi
mais vu que c'est une chaine de caractère
scanf("%s", &sMsg); gmAdd(sMsg, &dRC);je dois faire un strcopy ou un truc du genre ?
Merci de ton aide en tout cas :d :d :d
En C, tout ce que tu tapes rentre dans le buffer y compris la touche entrée ('\n' après traduction par l'OS).
Donc, si pendant le scanf("%c",&clavUtil), tu tapes 'abcde' et tu valides. Le premier caractère 'a' va aller dans clavUtil, et 'b', 'c', 'd', 'e', '\n' vont aller dans le buffer clavier. Ainsi à un autre scanf, s'ils peuvent sortir, ils ne se priveront pas (les chenapans ^^).
scanf("%s", &sMsg);
Ce n'est pas bon.
Il faut mettre scanf("%s", sMsg); Pas d'esperluette (&).
Sinon petit conseil, utilise plutôt : fgets(sMsg,sizeof sMsg,stdin) (C'est plus sécurisé ;)).
gmAdd(sMsg, &dRC);
Euh, je sais pas ce que fait ta fonction ^^.
Euh, je sais pas ce que fait ta fonction ^^.
Elle place le message d'erreur dans un tableau, mais là ça va ça marche :d
En tout cas ton explication était bien clair et je comprends mieux.
Me reste plus qu'à mettre résolu ;) .
Merci encore ....