| 12
 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