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
|
#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 200
int main(void)
{
/* declarations */
FILE * f_p ;
unsigned long tab_elem[256] ;
char ** file_buffer ;
void * test_p ;
unsigned long i , j , num_of_lines ;
unsigned char char_index ;
/* ouverture du fichier */
if( (f_p = fopen("la_fontaine.txt" , "r" )) == NULL ){
puts("fichier introuvable") ;
return EXIT_FAILURE ;
}
/* initialisation du tableau qui compte le nombre d'occurences */
for ( i = 0 ; i<256 ; i++ ) {
tab_elem[i]=0 ;
}
/* lecture du fichier et stockage dans un tableau de chaines
* de caracteres */
i = -1 ;
do {
i +=1 ;
file_buffer[i] = malloc( MAX_LENGTH*sizeof(**file_buffer) ) ;
if (file_buffer[i] == NULL) {
puts("erreur d'allocation memoire") ;
return EXIT_FAILURE ;
} else {
file_buffer[i] = fgets(file_buffer[i], MAX_LENGTH, f_p ) ;
printf("la ligne %lu est %s",i,file_buffer[i]);
}
} while ( file_buffer[i] != NULL ) ;
num_of_lines = i ;
printf("Le nombre de ligne est %lu\n", num_of_lines ) ;
/* erreur de segmentation */
for ( i=0 ; i< num_of_lines ; i++ ) {
j = 0 ;
while (file_buffer[i][j] != '\0'){
char_index = (unsigned char)file_buffer[i][j] ;
tab_elem[char_index] += 1 ;
printf("caractere %c detecte", file_buffer[i][j] ) ;
j += 1 ;
}
printf("%lu caracteres dans la ligne %lu\n",j,i ) ;
}
/* affichage du nombre d'occurence de chaque lettre */
for (i = 0 ; i< 256 ; i++ ) {
printf("caractere %c, %lu occurences\n", (char)i , tab_elem[i] ) ;
}
return EXIT_SUCCESS ;
} |
Partager