#include <stdio.h>
#include <string.h>
#define NB_MOTS_DICO 30
#define LG_MOT_MAX 30 //On est pas en allemand : 30 suffit
#define LG_LIG_MAX 1024
int main( int argc, char **args){
if(argc != 3){ printf("Utilisation : ./ortho_check CHEMIN_dico.txt CHEMIN_Texte.txt"); return 0;}
//-------------------- VARIABLES ET INITIALISATION ------------------------
int continuer =1;
char *res;
char *sep = ";.,? ():!\t\n";
char ligne[LG_LIG_MAX]; //La ligne lue;
char dico[NB_MOTS_DICO][LG_MOT_MAX]; //Le dictionnaire en mémoire
//Dictionnaire
FILE *fichier = NULL;
fichier = fopen(args[1], "r");
printf("Ouverture du dictionnaire... \n");
//On vérifie l'ouverture du fichier
if (!fichier){ printf ("Impossible d'ouvrir le fichier dictionnaire...\n"); return 1;}
//Remplissage du dico
// /!\ Le fichier dico doit être proprement construit
printf("Remplissage du dictionnaire...\n");
int i = 0;
while(fgets ( dico[i],LG_MOT_MAX, fichier) != NULL && i < NB_MOTS_DICO){
dico[i][ (strlen(dico[i]) -1)] = 0; //On élimine le \n a la fin du mot du dico
i++;
printf("%d ",i);
}
// Fin de remplissage du dico
if( fclose(fichier) ){printf ("Impossible de fermer le fichier dictionnaire...\n"); return 1;}
//Ouverture du fichier texte
fichier = fopen(args[2], "r");
printf("\nOuverture du fichier texte...\n");
//On vérifie l'ouverture du fichier
if (!fichier){ printf ("Impossible d'ouvrir le fichier texte...\n"); return 1;}
//-------------------------------- PARCOURS DU FICHIER ET AFFICHAGE DES MOTS ERRONES -------------------------
printf("Affichage des mots errones...\n");
while (fgets(ligne, LG_LIG_MAX, fichier) != NULL) //Tant qu'il n'y a pas d'erreur de lecture du fichier source
{
//Lecture du premier mot de la ligne
res = strtok(ligne, sep);
while(res != NULL){ //Tant que un token est trouve
//printf("test du mot : %s\n", res);
//On vérifie si res n'est pas contenu dans le dico
i=0;
continuer = 1;
while(continuer){ //Tant que le mot se trouve plus loin dans le dico
if (strcmp(res, dico[i]) < 0){printf("%s \n", res); continuer = 0;}
if (strcmp(res, dico[i]) == 0)
continuer = 0;
i++;
}
res = strtok(NULL, sep);
}
}
printf("Finit\n");
return 0;
}