Bonjour c'est encore moi ,
J'ai un autre problème,
J'ai créer 3 fonctions :
- la premiere permet de compter le nombre de ligne dans un fichier
- la 2eme permet d'afficher le contenue de mon fichier
-le 3eme permet d'ajouter un contenue dans le fichier s'il n'est pas présent
Voici mon 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
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 
 
int compte_ligne(FILE *fichier){
 
	int count = 0;
	int nLignes = 0;
 
	while((count=fgetc(fichier)) != EOF)
	{
		if(count=='\n'){
			nLignes++;
        }    
	}
    //nLignes = nLignes + 1;
    count = 1;
    fclose(fichier);
 
 
	return nLignes;
}
 
void afficher_lieu (int nLignes) {
 
    FILE *fichier;
    char* chaine;
    int i=0;
 
    fichier = fopen("Fichier/Lieu.txt", "r"); //Ouvre le fichier que en read 
 
/* A voir apres
    if (fichier == NULL ){ //Au cas ou il y aurait une erreur lors de l'ouverture du fichier
        fprintf(stderr, "Erreur ouverture fichier - Abandon\n"); 
		return -1; // Return -1 pour erreur
    }
*/
 
    while(i < nLignes){
        fgets(chaine, 80, fichier); 
        printf("test : %s", chaine); 
        i = i + 1;
    }
    fclose(fichier); //Ferme le fichier
 
}
 
void afficher_participants (int nLignes) {
 
    FILE *fichier;
    char* chaine;
    int i=0;
 
    fichier = fopen("Fichier/Participant.txt", "r"); //Ouvre le fichier que en read 
 
/* A voir apres
    if (fichier == NULL ){ //Au cas ou il y aurait une erreur lors de l'ouverture du fichier
        fprintf(stderr, "Erreur ouverture fichier - Abandon\n"); 
		return -1; // Return -1 pour erreur
    }
*/
 
    while(i < nLignes){
        fgets(chaine, 80, fichier); 
        printf("\nParticipant : %s", chaine); 
        i = i + 1;
    }
 
    fclose(fichier); //Ferme le fichier
 
}
 
void ajouter_lieu (){
 
 
    FILE *fichier;
 
    char Lieu_Dans_Fichier[30], Lieu_entree[30];
    int trouve = 0;
    fichier = fopen("Fichier/test.txt", "r"); //Ouvre le fichier que en read 
 
/* A voir apres
    if (fichier == NULL ){ //Au cas ou il y aurait une erreur lors de l'ouverture du fichier
        fprintf(stderr, "Erreur ouverture fichier - Abandon\n"); 
		return -1; // Return -1 pour erreur
    }
*/
 
    printf("Lieu a ajouter : ");  //Pour savoir le mot cherche
    scanf("%s",Lieu_entree);
 
    while (fgets(Lieu_Dans_Fichier,30,fichier) != NULL) // Le 30 correspond a max 30 caracteres
    {   
      if (strstr(Lieu_Dans_Fichier, Lieu_entree) != NULL){  // Si mot cherche == mot dans le fichier 
            trouve = 1;
        }
    }
    fclose(fichier); //Ferme le fichier
 
    fichier = fopen("Fichier/Lieu.txt", "a"); //Ouvre le fichier en mode écriture
 
    if (trouve == 1){
        printf("Le lieu existe deja :)");
    }
    else{
        printf("OK, Ajout du lieu");
        fprintf(fichier, "%s\n", Lieu_entree);  //Ecrit le mot recherche a la fin du fichier 
    }
    fclose(fichier); //Ferme le fichier
}
 
int main () {
 
    FILE *fichier_lieu = fopen("Fichier/Lieu.txt", "r");
    FILE *fichier_participant = fopen("Fichier/Participant.txt", "r");
   afficher_participants(compte_ligne(fichier_participant));
    afficher_lieu(compte_ligne(fichier_lieu));
    ajouter_lieu();
 
 
    fclose(fichier_lieu); fclose(fichier_participant);
    return 0;
 
}
Le problème est : Quand j'exécute le programme la fonction ajouter_lieu() n'est pas exécuter. Par contre quand je retire l'appel : afficher_lieu(compte_ligne(fichier)); , la fonction ajouter_lieu() est exécutée. Je ne comprends vraiment pas pourquoi ...
Si vous pouvez m'aider
@+
Bapth