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 :
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
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'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.
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'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 ?
ça donnerait ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int nombreAleatoire; nombreAleatoire = rand(1, compteur);
Partager