c语言针对给定文本文件,统计其中不同字符的发生频率,形成待编码的字符集和发生概率
时间: 2024-02-29 22:53:10 浏览: 54
好的,针对您的问题,我可以给出以下C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXCHAR 256
int main(int argc, char *argv[]) {
FILE *fp;
int freq[MAXCHAR] = {0};
int total = 0;
int c;
if (argc != 2) {
printf("Usage: %s filename\n", argv[0]);
exit(EXIT_FAILURE);
}
if ((fp = fopen(argv[1], "r")) == NULL) {
printf("Cannot open file: %s\n", argv[1]);
exit(EXIT_FAILURE);
}
while ((c = fgetc(fp)) != EOF) {
if (isprint(c)) {
freq[c]++;
total++;
}
}
fclose(fp);
printf("Character\tFrequency\tProbability\n");
printf("----------------------------------------\n");
for (int i = 0; i < MAXCHAR; i++) {
if (freq[i] > 0) {
printf("%c\t\t%d\t\t%.2f%%\n", i, freq[i], (float)freq[i]/total*100);
}
}
return 0;
}
```
这个程序会读取一个指定文件的内容,并统计不同字符在文件中出现的频率。程序会输出每个字符的出现次数以及其出现概率。注意,这个程序只会统计可打印字符的出现频率,因为其他字符(例如控制字符)可能不适合作为编码字符集的一部分。
阅读全文