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 }