2 !!DESCRIPTION!! print character frequencies
3 !!ORIGIN!! LCC 4.1 Testsuite
4 !!LICENCE!! own, freely distributeable for non-profit. read CPYRIGHT.LCC
8 cf - print character frequencies
15 #define INFILE "cf.in"
23 #ifdef NO_OLD_FUNC_DECL
24 int main(int argc,char **argv)
46 cutoff = atof(argv[1])/100;
48 cutoff = atoi(argv[1])/100;
50 for (i = 0; i < 0x100; )
62 while ((c = GETCHAR()) != -1)
64 /* printf("[%02x]",c); */
69 printf("\n\ncount: %d\n\n",nc);
72 now try to print a report in a way so that
73 the order is somewhat independent from the
77 printf("a-z char:freq\n\n");
79 /* first round ... lowercase characters */
80 for (i = 0; i < 0x100; ++i)
82 if ((f[i]) && ((f[i]/nc) >= cutoff))
84 if ((i >= 'a') && (i <= 'z'))
88 printf(":%.1f\n", 100*f[i]/nc);
90 printf(":%d\n", 100*f[i]/nc);
97 printf("A-Z char:freq\n\n");
99 /* second round ... uppercase characters */
100 for (i = 0; i < 0x100; ++i)
102 if ((f[i]) && ((f[i]/nc) >= cutoff))
104 if ((i >= 'A') && (i <= 'Z'))
108 printf(":%.1f\n", 100*f[i]/nc);
110 printf(":%d\n", 100*f[i]/nc);
117 printf("0-9 char:freq\n\n");
119 /* third round ... numbers */
120 for (i = 0; i < 0x100; ++i)
122 if ((f[i]) && ((f[i]/nc) >= cutoff))
124 if ((i >= '0') && (i <= '9'))
128 printf(":%.1f\n", 100*f[i]/nc);
130 printf(":%d\n", 100*f[i]/nc);
137 printf("isprint char:freq\n\n");
139 /* second last round ... remaining printable characters */
140 for (i = 0; i < 0x100; ++i)
142 if ((f[i]) && ((f[i]/nc) >= cutoff))
148 printf(":%.1f\n", 100*f[i]/nc);
150 printf(":%d\n", 100*f[i]/nc);
157 printf("rest char:freq\n\n");
159 /* last round ... remaining non printable characters */
160 for (i = 0; i < 0x100; ++i)
162 if ((f[i]) && ((f[i]/nc) >= cutoff))
173 printf(":%.1f\n", 100*f[i]/nc);
175 printf(":%d\n", 100*f[i]/nc);