Salut!
Je suis en pleine création d'un petit programme. Je trouve un petit problème dans l'exécution. Ce dernier est destiné à indexer des fichiers, et de sauvegarder les différents mots et son nombre d'occurence dans un fichier spécifique index.txt. Aucune erreur au niveau de la compilation ni au niveau de l'exécution mais plutôt lors de la création du nouveau fichier, ce fait ne veux pas marcher d'où son affichage sur console na marche pas. Je sais ps pourquoi.

S'il vous plaît, j'ai besoin d'une aide.

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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
typedef struct link link;
struct link
{
    char nom[30];
    int nbOccur;    // nombre d'incrémentation de la chaîne
    link *suivant;
};
 
link* trouve(char CH[30], link *tete)
{
    link *ptr = tete;
 
    while(ptr != NULL && !strcmp(ptr->nom, CH))
        ptr=ptr->suivant;
 
    return ptr;
}
 
link* insertQueue(char CH[30], link *tete)
{
    link *newLink = NULL;
    link *ptr = tete;
 
    if (ptr!= NULL)
        while(ptr->suivant != NULL )
            ptr=ptr->suivant;
 
    newLink=(link*)malloc(sizeof(link));
    newLink->suivant = NULL;
    strcpy(newLink->nom, CH);
    newLink->nbOccur = 1;
 
    if (ptr!= NULL)
        {
            ptr->suivant = newLink;
            return tete;
        }
    else
        return newLink;
 
}
 
void createNewFile(link *tete)
{
    FILE *fichier = NULL;
    link *ptr = tete;
 
    fichier = fopen("index.txt", "w+");
 
    if(fichier != NULL)
    {
        while(ptr != NULL)
        {
            fprintf(fichier, "%s\t\t%d\n", ptr->nom, ptr->nbOccur);
            ptr = ptr->suivant;
        }
        fclose(fichier);
    }
}
 
void affichNewFile()
{
    FILE *fichier = NULL;
    int caractereActuel = 0;
 
    fichier = fopen("index.txt", "r");
 
    if(fichier != NULL)
    {
        do
        {
            caractereActuel = getc(fichier);
            printf("%c", caractereActuel);
        }
        while(caractereActuel != EOF);
    }
}
 
int main(int argc, char *argv[])
{
    link *tete = NULL;              // Tête de liste
    link *mot = tete;               // parcours de la liste de chaînes
    FILE *fichier = NULL;           // Pointeur sur fichier à traîter
    int caractereActuel = 0;        // Caractère en cours de traitement
    char chaineEnCours[30] = "\0";  // Chaîne en cours de formation
    char carac[2] = " " ;           // Sert pour la convertion d'un caractère en chaîne
    char path[50];                  // Path du fichier à traîter
 
    printf("Chemin du fichier a traiter : ");
    gets(path);
 
    fichier = fopen(path, "r");
 
    if (fichier != NULL)
    {
        // Boucle de lecture des caractères un à un
        do
        {
            caractereActuel = fgetc(fichier);
 
            if(isspace(caractereActuel) || caractereActuel=='.' || caractereActuel==',' || caractereActuel==';' || caractereActuel=='?' || caractereActuel=='!' || caractereActuel==':' || strcmp(chaineEnCours, "\0"))
            {
                mot = trouve(chaineEnCours, tete);
 
                if(mot != NULL)
                {
                    mot->nbOccur = mot->nbOccur + 1;
                    mot = NULL;
                }
                else
                    tete = insertQueue(chaineEnCours, tete);
 
                strcpy(chaineEnCours, "\0");
            }
            else
            {
                carac[0] = (char)caractereActuel;
                carac[1] = '\0';
                strcat(chaineEnCours, carac);
            }
 
        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
 
        fclose(fichier);
    }
    else
        printf("Impossible d'ouvrir le fichier %s!", path);
 
    createNewFile(tete);
    affichNewFile();
 
    free(mot);
    free(tete);
 
    return 0;
}
D'avance, merci beaucoup!