Je suis débutant en langage C et je travaille sur le 2e TP du cours.
Ma boucle est lue 2 fois et la 2e fois comme si je n'avais rien saisie. Le code est bien compilé mais c'est un peu dérangeant.
Merci d'avance pour vos réponses.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void presentation();
char saisie();
void afficheMot (char *cache, char *mot, char lettre);
int main(int argc, char *argv[]) {
char mot[] = "ROUGE";
char cache[] = "*****";
presentation();
while(strcmp(mot, cache) != 0) {
afficheMot(cache, mot, saisie());
printf("%s", cache);
}
}
void presentation() {
printf(" =================\n");
printf(" | JEU DU PENDU |\n");
printf(" =================\n\n");
printf("INSTRUCTIONS:\n\n");
printf("Le but de ce jeu est de trouver le mot mystère en moins de 10 essais.\nTout caractère spécial y compris les accents ne sont pas acceptés.\n\n");
}
char saisie() {
char lettre;
printf("\nProposez une lettre\n");
lettre = getchar();
lettre = toupper(lettre);
return lettre;
}
void afficheMot (char *cache, char *mot, char lettre) {
int i;
for(i = 0; i < 5; i++) {
if(lettre == mot[i] && cache[i] == '*') {
cache[i] = lettre;
}
}
}
Et voilà ce qui est affichz lors de l'execution:
=================
| JEU DU PENDU |
=================
INSTRUCTIONS:
Le but de ce jeu est de trouver le mot mystère en moins de 10 essais.
Tout caractère spécial y compris les accents ne sont pas acceptés.
Proposez une lettre
r
R****
Proposez une lettre
R****
Proposez une lettre
o
RO***
Proposez une lettre
RO***
Proposez une lettre
g
RO*G*
Proposez une lettre
RO*G*
Proposez une lettre
u
ROUG*
Proposez une lettre
ROUG*
Proposez une lettre
e
ROUGE#
Problème classique: il faut vider le buffer clavier après le 1er getchar(). Lorsque tu tapes R suivi de enter (ou return), getchar lit le premier caractère (le R), mais le enter (le '\n') reste dans le buffer clavier. Quand tu reviens dans ta fonction, le getchar() le lit.
- Edité par edgarjacobs 16 août 2017 à 17:59:12
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Boucle lue 2 fois (TP du pendu)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent