Merci à celui qui m'aidé la dernière fois.

Je suis en stage actuellement, je suis en réseau et mon maitre de stage m'a demandé de réaliser un programme pour la gestion des fichiers sur le serveur ... que ceux ci soit remis à jour dans un fichier index en html. J'ai donc découvert le c lundi dernier et aujourd'hui je me dis que si je touche plus au programme je vais encore plus le bugger. Je vous montre le code et si vous avez des conseils à me donner ... n'hésitez pas svp.

merci à tous

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
142
143
144
145
146
147
148
149
150
 
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#include <time.h>
 
FILE * f1, * f2, * f3;
DIR * dossier;
struct dirent *tableau;
char *tab[10000], *tabfich[10000], *tabdossier[10000];
char *nomfich[50],*nomfich2[50];
char *nomdoss[50], *nomdoss2[50];
char *annee[50];
int compt, ouinon=0, temp=0;
 
/*Recupère l'année en cours*/
void RecupereAnnee(int AnneeEnCours)
{
    struct tm * tempstotal;
    time_t t;
    time(&t);
    tempstotal=localtime(&t);
    AnneeEnCours=1900+tempstotal->tm_year;
}
 
/*Lecture des fichiers et des tableaux*/
void Lecture()
{
    int i=0, j, *test;
    char tabtest[10000];
    ouinon=1;
    while ((tableau=readdir(dossier))!=NULL)
        {
            tab[j]= malloc(strlen((tableau->d_name)+1));
            strcpy(tab[j],tableau->d_name);
            tabfich[j]=malloc(strlen((tableau->d_name)+1));
 
            if ((test=strlen(tableau->d_name))>20)
            {
                j++;
                temp++;
            }
        }
        j=0;
    while (fscanf(stdin,"%s", tabtest[j]))
        {
            if (strcmp(tab[j], tabtest)!=0)
            {
                ouinon=1;
                tabfich[i]=tab[j];
                i++;
            }
        }
}
 
/*Ecriture de Fichier*/
void EcritureFichiers(temp)
{
    int j=0;
    for (j=0;j<=temp;j++)
    {
        fprintf(f1,"%s\n",tabfich[j]);
        fprintf(f2,"<a href=\"%s\">%s</a><br>", tabfich[j], tabfich[j]);
    }
}
 
/*Ecriture direct si fichiers n'existent pas*/
void EcritureDirect()
{
    int j=0, test;
    while ((tableau=readdir(dossier))!=NULL)
        {
            tabfich[j]= malloc(strlen(tableau->d_name)+1);
            strcpy(tabfich[j],tableau->d_name);
            test=strlen(tableau->d_name);
            fprintf(f1,"%s\n",tabfich[j]);
            fprintf(f2,"<a href=\"%s\">%s</a><br>", tabfich[j], tabfich[j]);
            j++;
        }
}
 
void CreateName(int compt)
{
    sprintf(annee,"repertoire%d",compt);
    sprintf(nomdoss,"./%s/index%d.txt",annee,compt);
    sprintf(nomdoss2,"./%s/index%d.htm",annee,compt);
    sprintf(nomfich,"index%d.txt",compt);
    sprintf(nomfich2,"index%d.htm",compt);
}
 
 
/* Programme principale*/
void main()
{
    int j, AnneeEnCours;
    compt=1995;
    RecupereAnnee(AnneeEnCours);
    /*Mises à jours éffectuées sur plusieurs années.*/
    while (compt<=AnneeEnCours)
    {
        CreateName(compt);
        /*Test : le répertoire existe-t-il ?*/
        if ((dossier=opendir(annee))!=NULL)
        {
            if (((f1=fopen(nomdoss,"r"))!=NULL)&&((f2=fopen(nomdoss2,"r"))!=NULL))
            {
                /*Le premier fichier fait office d'index pour les mises à jours.*/
                fclose(f1);
                fclose(f2);
                ouinon=1;
                f2=fopen(nomdoss2,"a");
                printf("%s;\n",f1);
                f1=fopen(nomdoss,"a");
                printf("%s;\n",f2);
             }
             else
            {
                ouinon=0;
                f2=fopen(nomdoss2,"w");
                printf("%s;\n",nomdoss);
                f1=fopen(nomdoss,"w");
                printf("%s;\n",nomdoss2);
            }
            if (ouinon==1)
            {
                Lecture();
                /*Test : Si les deux chaines de caractères sont égales alors ...*/
                EcritureFichiers(temp);
                fclose(f1);
                fclose(f2);
                closedir(dossier);
                if (AnneeEnCours==compt)
                {
                    f3=fopen("newsletter.htm","w");
                    for (j=0;j<temp;j++)
                    {
                        fprintf(f3,"<a href=\"%s/%s\">%s</a>", annee, tab[j], tab[j]);
                    }
                    fclose(f3);
                }
            }
            else
            {
            EcritureDirect();
            }
        }
        compt++;
    }
}