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
19 #define INFILE "cf.in"
20 #define GETCHAR() fgetc(in)
28 #ifdef NO_OLD_FUNC_DECL
29 int main(int argc,char **argv)
43 in = fopen(INFILE, "rb");
56 cutoff = atof(argv[1])/100;
58 cutoff = atoi(argv[1])/100;
60 for (i = 0; i < 0x100; )
72 while ((c = GETCHAR()) != -1)
74 /* printf("[%02x]",c); */
79 printf("\n\ncount: %d\n\n",nc);
82 now try to print a report in a way so that
83 the order is somewhat independent from the
87 printf("a-z char:freq\n\n");
89 /* first round ... lowercase characters */
90 for (i = 0; i < 0x100; ++i)
92 if ((f[i]) && ((f[i]/nc) >= cutoff))
94 if ((i >= 'a') && (i <= 'z'))
98 printf(":%.1f\n", 100*f[i]/nc);
100 printf(":%d\n", 100*f[i]/nc);
107 printf("A-Z char:freq\n\n");
109 /* second round ... uppercase characters */
110 for (i = 0; i < 0x100; ++i)
112 if ((f[i]) && ((f[i]/nc) >= cutoff))
114 if ((i >= 'A') && (i <= 'Z'))
118 printf(":%.1f\n", 100*f[i]/nc);
120 printf(":%d\n", 100*f[i]/nc);
127 printf("0-9 char:freq\n\n");
129 /* third round ... numbers */
130 for (i = 0; i < 0x100; ++i)
132 if ((f[i]) && ((f[i]/nc) >= cutoff))
134 if ((i >= '0') && (i <= '9'))
138 printf(":%.1f\n", 100*f[i]/nc);
140 printf(":%d\n", 100*f[i]/nc);
147 printf("isprint char:freq\n\n");
149 /* second last round ... remaining printable characters */
150 for (i = 0; i < 0x100; ++i)
152 if ((f[i]) && ((f[i]/nc) >= cutoff))
158 printf(":%.1f\n", 100*f[i]/nc);
160 printf(":%d\n", 100*f[i]/nc);
167 printf("rest char:freq\n\n");
169 /* last round ... remaining non printable characters */
170 for (i = 0; i < 0x100; ++i)
172 if ((f[i]) && ((f[i]/nc) >= cutoff))
183 printf(":%.1f\n", 100*f[i]/nc);
185 printf(":%d\n", 100*f[i]/nc);