用c语言统计不同字符在文章中出现的频率(空格、换行、标点等也按字符 处理)。
时间: 2024-02-18 14:06:12 浏览: 185
C语言程序设计-分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80);.c
5星 · 资源好评率100%
好的,您可以使用以下的C语言代码实现不同字符出现频率的统计:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char filename[] = "your_filename.txt";
char *content;
int freq[256] = {0}; // 统计字符出现频率的数组
// 打开文件
fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
// 获取文件长度
fseek(fp, 0, SEEK_END);
long length = ftell(fp);
fseek(fp, 0, SEEK_SET);
// 分配内存并读取文件内容
content = malloc(length + 1);
fread(content, 1, length, fp);
content[length] = '\0';
// 统计字符出现频率
char *ptr = content;
while (*ptr != '\0') {
freq[(unsigned char)*ptr]++;
ptr++;
}
// 打印统计结果
for (int i = 0; i < 256; i++) {
if (freq[i] != 0) {
printf("%c: %d\n", i, freq[i]);
}
}
// 关闭文件并释放内存
fclose(fp);
free(content);
return 0;
}
```
请将上述代码中的 `your_filename.txt` 替换为您实际的文件名,并确保该文件存在于您的程序目录中。
该代码使用了一个长度为256的整型数组 `freq` 来存储每个字符出现的频率,其中数组的下标代表字符的ASCII码值。程序读取文件内容后,遍历每个字符并将其在 `freq` 数组中对应位置的值加1。最后,程序遍历 `freq` 数组并打印出现频率不为0的字符及其出现次数。
阅读全文