Bonjour je suis en train de faire un pendu en C et j'ai déjà réalisé la première partie du code, ou une variable est une chaîne qui est le mot à trouver mais j'aimerais pouvoir le faire avec un fichier avec plusieurs mots.

Voici la première partie du code :
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
 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
 
 
char lireCaractere()
{
    char caractere=0;
    caractere = getchar();
    caractere = toupper(caractere);
 
    while(getchar() != '\n');
 
    return caractere;
 
}
 
int main()
{
    int NB_COUP_MAX = 10;
    char const motSecre[]="BONJOUR";
    char motActuel[128]="*******";
    char maLettre=0;
    int lettreTrouvee = 0; // booléen 
    int j = 0;
    int longueur= strlen(motSecre);
    printf("Bienvenue sur le jeu du pendu ! \n ");
 
 
 
    while(strcmp(motSecre, motActuel) != 0 && NB_COUP_MAX > 0)
    {
        printf("Voici le mot actuel: %s, il vous reste %d \n", motActuel, NB_COUP_MAX);
        printf("Saisir une lettre: ");
        maLettre=lireCaractere();
        for(j=0 ; j<longueur ; j++){
            if(motSecre[j] == maLettre){
                motActuel[j] = maLettre;
                lettreTrouvee = 1;
            }
 
 
        }
 
        if(lettreTrouvee == 0){
            NB_COUP_MAX -= 1;   
        }
 
    }
    if(strcmp(motSecre, motActuel) == 0)
        printf("Félicitation vous avez trouvé le bon mot: %s ! \n", motSecre);
    else
        printf("Vous avez perdu, le nombre de tentatives a été atteint ! \n");
 
    return 0;
J'ai ensuite fait une deuxième partie qui consiste à compter le nombre de lignes du fichier et à stocker cette valeur dans une variable compteur.

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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
int main(void)
{   
    int caractere = 0;
    int compteur = 0;
    FILE *fichier = fopen("test", "r");
 
    if(fichier != NULL)
    {
 
    do
    {
        caractere=fgetc(fichier);
        if(caractere == '\n')
            compteur++;
 
    }while(caractere != EOF);
    printf("Compteur : %d\n",compteur );
    rewind(fichier);
 
    fclose(fichier);
 
}
 
 
    return 0;
}
J'utilise rewind pour revenir à la position de départ du fichier, le soucis c'est que j'aimerais donc ensuite pouvoir saisir aléatoirement un nombre entre 1 et le compteur et ensuite me déplacer dans mon fichier par LIGNE et stocker ce mot dans une chaîne mais je vois pas comment me déplacer par ligne.

J'ai vu qu'il y avait la fonction fseek mais elle permet de se déplacer par caractère. Ou faut-il utiliser la fonction fgets ? mais comment l'utiliser avec le compteur ?

Enfin pour générer un nombre aléatoire on utilise la fonction rand du coup ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int nombreAleatoire;
nombreAleatoire = rand(1, compteur);
ça donnerait ça ?