#include #include #include #include "ed/inc/ascii.h" /* 0=Normal 1=Debug */ #define DBG 0 /* nom du fichier de source */ #define F_IN "dico_fr_min.txt" /* nom du fichier de destination */ #define F_OUT "dico_fr_maj.txt" int main (void) { /* ouverture du fichier de source en lecture texte */ FILE *fp_in = fopen (F_IN, "r"); if (fp_in != NULL) { /* OK, ouverture du fichier de destination en ecriture texte */ FILE *fp_out = fopen (F_OUT, "w"); if (fp_out != NULL) { /* compteur de mots (environ 300.000, un long suffit) */ long n = 0; /* caractere lu */ int c; /* lecture du fichier source caracteres par caracteres */ while ((c = fgetc (fp_in)) != EOF) { #if DBG (fputc) (c, stdout); #endif /* suppression de l'accentuée */ c = ASCII_noacc_ansi (c); /* ne devrait jamais arriver (ce serait un bug de la bibliothèque) */ assert (c != -1); #if DBG (fputc) (c, stdout); fflush (stdout); #endif /* forçage en majuscule */ c = toupper (c); /* comptage des lignes */ if (c == '\n') { n++; } /* recopie du caractère (modifié ou non) dans le fichier de destination */ fputc (c, fp_out); } /* fermeture du fichier de destination. */ fclose (fp_out), fp_out = NULL; /* Dans ce fichier : un mot par ligne */ printf ("%ld words processed\n", n); } else { /* message d'erreur */ perror (F_OUT); } /* fermeture du fichier source */ fclose (fp_in), fp_in = NULL; } else { /* message d'erreur */ perror (F_IN); } return 0; }