/** * Aide pour l'exercice 5 du TP7. * Chargement du fichier dans une unique chaine de caractères. Puis comptage du nombre de mots. */ #include #include #include #include #include #include #include char fichier[]="wiki.txt" ; // Nom du fichier texte à analyser int compterMot (const char *t) { int i=0, cpt=0 ; while (t[i] != '\0') { cpt = t[i]==' ' ? cpt+1 : cpt ; i ++ ; } return cpt+1 ; } int main (int argc, char **argv) { int err; FILE *fpb ; // taille du fichier struct stat info ; err = stat (fichier, &info) ; if (err <0) { perror("Probleme appel stat") ; return (EXIT_FAILURE); } int taille = (int) info.st_size ; //allocation mémoire printf("Taille de %s : %d\n", fichier, (int) info.st_size) ; char * texte = ( char *) malloc (taille*sizeof(char)+1 ) ; // lecture du fichier fpb = fopen (fichier,"r"); int lg_read = fread(texte, sizeof(char), taille, fpb) ; if (lg_read <=0 ) {perror ("pb fread") ; return (EXIT_FAILURE);} texte[taille]='\0' ; // finir la chaine de caractères fclose(fpb); printf ("texte = %s\n", texte ) ; //compter le nombre de mots int nbMots = compterMot(texte) ; printf ("nbMots = %d\n", nbMots ) ; // Allouer le tableau de pointeurs de mots // char **tabMots = ( char **) malloc (nbMots*sizeof(char*) ) ; // TODO : Parcourir la chaine "texte" et allouer une chaine par mot (Attention au \0) // et copier chaque mot, en utilisant sprintf par exemple, dans la chaine allouée. // on peut aussi ouvrir de nouveau le fichier et le lire mot par mot. c'est un peu plus simple. //~ int i; //~ for (i = 0 ; i