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
| int compter_mots_fichiers(char * rep_convert, char * fichier_mots, char * nom_fichier_2, char * nom_fichier_3)
{
char * buffer,* recherche, * str_sans_espace,ligne [1024];
int nbr_conv=0, nombre_fichier=0, compt = 0, nbr_total_mot = 0, nombre_rep=0, nb_total,nb_fichier ;
struct dirent *lecture;
DIR *rep2;
FILE *fichier_2, *fichier_3, *fichier_mot;
rep2 = opendir(rep_convert);
while ((lecture = readdir(rep2))) //parcours des fichiers dans le répertoire
nombre_rep++;
fichier_2 = fopen(nom_fichier_2, "wb"); // fichier final contenant uniquement les liens
fichier_3 = fopen(nom_fichier_3, "wb"); // fichier final contenant uniquement les liens
fprintf(fichier_2, "STATISTIQUES DES DOCUMENTS DE %s \n\n", rep_convert);
fprintf(fichier_3,"STATISTIQUES DES DOCUMENTS DE %s \n\n", rep_convert );
fichier_mot = fopen ( fichier_mots, "rb" );
if ( fichier_mot != NULL )
{
while ( fgets ( ligne, sizeof ligne, fichier_mot ) != NULL )
{
str_sans_espace=trim(ligne); //efface les espaces inutiles
recherche=str_sans_espace;
nb_total=0;
nb_fichier=0;
DIR *rep;
rep = opendir(rep_convert);
while ((lecture = readdir(rep))) //parcours des fichiers dans le répertoire
{
nombre_fichier++;
int continuer=1;
if(nombre_fichier>2 && nombre_fichier!=nombre_rep)//&& nombre_fichier<5) //on ignore . et ..
{
nbr_conv++;
char lien_ini[255]={0};
char *nom_fichier_seul;
sprintf(lien_ini,"%s%s",rep_convert, lecture->d_name );
nom_fichier_seul = strchr(lecture->d_name, '.'); //suppression de l'extension
if(nom_fichier_seul!=NULL)
*nom_fichier_seul = '\0';
FILE *fichier;
int taille_fichier;
char *balise_debut, *debut;
fichier = fopen (lien_ini, "rb");
if (fichier == NULL)
{
printf("\n fichier ini vide %s, %d \n", lien_ini, nombre_fichier);
// return 1;
}
else
{
fseek (fichier, 0 , SEEK_END); // determine la taille du fichier
taille_fichier = ftell (fichier);
rewind (fichier);
buffer = malloc (taille_fichier); //allocation mémoire pour le buffer d
if (buffer == NULL) //si buffer vide, erreur
{
printf("\n buffer vide erreur %s => %d \n",lien_ini, taille_fichier);
// return 2;
}
else
{
fread (buffer, 1, taille_fichier, fichier); // copie du fichier dans le buffer/tampon
fclose(fichier);
balise_debut = recherche;
while (continuer == 1)
{
debut = strstr(buffer, balise_debut); //recherche dans le buffer
if (debut != NULL)
{
nbr_total_mot++;
nb_total++;
int fin_balise=strlen(buffer)-strlen(debut)+strlen(balise_debut) ;
buffer=buffer+fin_balise;
debut=strstr(buffer,balise_debut); //indication du nouveau début
}
else
{
continuer = 0;
}
}
nb_fichier = nb_total-nb_fichier;
if(nb_fichier>0 && nb_total>0 )
{
printf("Recherche du mot '%s' dans %s : %d \n", balise_debut, lien_ini, nb_fichier);
fprintf(fichier_2,"Recherche du mot '%s' dans %s : %d \n", balise_debut, lien_ini, nb_fichier);
}
nb_fichier= nb_total;
}
}
}
}
printf("\n\n TOTAL mot %s dans '%s' : %d \n\n", recherche, rep_convert,nb_total);
fprintf(fichier_2,"\n TOTAL mot '%s' dans %s : %d \n\n", recherche, rep_convert,nb_total );
fprintf(fichier_3,"%s : %d \n", recherche,nb_total );
nb_total=0;
nombre_fichier=0;
}
fclose(fichier_mot);
}
else
printf("\nprobleme fichier mot\n");
fprintf(fichier_2,"\n NOMBRE TOTAL MOTS : %d\n\n", nbr_total_mot);
fprintf(fichier_2,"\0");
fclose(fichier_2);
fclose(fichier_3);
free(buffer);
return 3;
} |
Partager