c-programming

Simple C programs
git clone git://git.laack.co/c-programming.git
Log | Files | Refs

frequency-analysis.c (911B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 int main(int argc, char** argv){
      5     if(argc != 3){
      6         printf("{source-file}");
      7     }
      8 
      9     char* source = argv[1];
     10 
     11     FILE* fpSrc = fopen(source, "r");
     12 
     13     fseek(fpSrc, 0, SEEK_END);
     14     long fsize = ftell(fpSrc);
     15     fseek(fpSrc, 0, SEEK_SET);
     16 
     17     char * fileContents = malloc(fsize + 1);
     18     fread(fileContents, fsize, 1, fpSrc);
     19     fclose(fpSrc);
     20 
     21     fileContents[fsize] = 0;
     22 
     23     char c;
     24     int itr;
     25 
     26     itr = 0;
     27     int charCounts [256];
     28 
     29     for(int i = 0 ; i < 256; ++i){
     30         charCounts[i] = 0;
     31     }
     32 
     33     while((c = fileContents[itr]) != 0){
     34         charCounts[c] += 1;
     35         itr += 1;
     36     }
     37 
     38     for(int i = 0 ; i < 256; ++i){
     39         if((i <= 'Z' && i >= 'A') || (i <= 'z' && i >= 'a')){
     40             if(charCounts[i] != 0){
     41                 printf("%5c%5d\n", (char)i, charCounts[i]);
     42             }
     43         }
     44     }
     45 
     46     free(fileContents);
     47 
     48 }