Tout d'abord bonjour à tous.

Je fais ce topic pour sollicité un peu d'aide sur un programme que j'ai fais récemment. Pour vous mettre dans le contexte je débute en C est dans mon apprentissage je suis amené à écrire un jeu du pendu. Voila donc je me suis pas trop mal débrouillé (enfin j'espère ), mais le soucis c'est qu'a l'exécution le programme ignore complètement la première lettre que je saisis.

Je m'explique, le programme affiche le mot a découvrir (dans ce cas c'est MARRON) donc M***** est affiché a l'écran, et le programme me demande de proposer une lettre. Si la lettre est bonne alors elle remplace une étoile.
Exemple si je tape A le mot devient MA****. Seulement, le problème que j'ai est que ma première saisis est complètement ignoré et je n'arrive pas a comprendre pourquoi

Si une âme charitable peut relire mon code est me trouver l'erreur ça serait d'une grande aide.

Merci d'avance, Vocograme.

Le code source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
int menu();
char lire_caractere();
 
int main(int argc, char* argv[])
{
    int rejouer = 1, tentatives = 0, nombre_lettres = 0, i = 0;
    char lettre = 0;
    char mot_secret[] = "MARRON", mot[] = "MARRON";
 
    nombre_lettres = strlen(mot_secret);        // on récupère la taille du mot secret
 
    for (i = 1; i < nombre_lettres; i++)
    {
        mot[i] = '*';       // On rempli mot de '*'. Le nombre d'étoiles sera le nombre de lettres du mot secret (sauf la premiere)
    }
 
    while (rejouer == 1)        // On reste dans la boucle tant que le joueur saisi 1
    {
        switch (menu())     // Affichage du menu de jeu et choix de la difficultée
        {
        case 1:
            tentatives = 10;        // Défini le nombre de tentatives pour trouver le mot
            break;
        case 2:
            tentatives = 8;
            break;
        case 3:
            tentatives = 6;
            break;
        }
 
        while (strcmp(mot, mot_secret) != 0 && tentatives > 0)        // Tant que le mot n'est pas trouvé et qu'il reste des tentatives
        {
            printf("\nIl vous reste %d coups a jouer", tentatives);
            printf("\nQuel est le mot secret ? %s", mot);
            printf("\nProposez une lettre : ");
            lettre = lire_caractere();
            tentatives--;
 
            for (i = 0; i < nombre_lettres; i++)        // On cherche la lettre de l'utilisateur dans mot_secret
            {
                if (lettre == mot_secret[i])        // Si la lettre correspond, elle est ajouté dans mot (a la place d'une etoile)
                {
                    mot[i] = mot_secret[i];
                }
            }
        }
 
        if (strcmp(mot, mot_secret) == 0)
        {
            printf("\n\nFELICITATIONS !!!!!!\n\nVous avez gagnez, c'etait bien le mot %s", mot);
        }
        else
        {
            printf("\n\nDOMMAGE ......\n\nLe bon mot etait %s", mot_secret);
        }
 
        printf("\n\nVoulez-vous refaire une partie ?\n\n");     // Propose de refaire une partie
        printf("1 - oui\n");
        printf("2 - non\n");
        scanf_s("%d", &rejouer);
    }
    printf("\nMerci d'avoir joue, a bientot !!\n");
 
    return 0;
}
 
int menu()
{
    int choix = 0;
 
    while (choix < 1 || choix>3)        // Retourne le niveau de difficulté choisi
    {
        printf("Bienvenue au jeu du pendu !\n\nVeuillez selectionner le niveau de difficulte :\n");
        printf("1 : FACILE\n");
        printf("2 : DIFFICILE\n");
        printf("3 : IMPOSSIBLE\n");
 
        scanf_s("%d", &choix);
    }
    return choix;
}
 
char lire_caractere()
{
    char caractere = 0;
 
    caractere = getchar();      // On lit le premier caractère
    caractere = toupper(caractere);     // On met la lettre en majuscule si elle ne l'est pas déjà
 
    while (getchar() != '\n');      // On lit les autres caractères mémorisés un à un jusqu'au \n (pour les effacer) 
 
    return caractere;       // On retourne le premier caractère qu'on a lu 
}