设计一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件c 语言
时间: 2024-12-14 07:28:09 浏览: 6
设计一个简单的C语言程序来统计输入字符串中各字符及其频率,并将结果保存到文件中,可以按照以下几个步骤:
1. **打开文件**:
首先需要打开一个文件用于写入数据。如果文件不存在,创建一个新的;如果存在,则追加内容。
```c
#include <stdio.h>
#include <string.h>
FILE *open_or_create_file(const char *filename) {
FILE *file = fopen(filename, "a");
if (!file) {
perror("Error opening file");
return NULL;
}
return file;
}
```
2. **读取字符串并统计字符频率**:
使用`fscanf`函数逐个读取字符,同时统计每个字符的出现次数。
```c
void count_chars(char *input, FILE *file) {
int freq[256] = {0}; // ASCII码范围,假设无非ASCII字符
int len;
if (fgets(input, sizeof(input), stdin)) {
len = strlen(input);
for (int i = 0; i < len; i++) {
freq[input[i]]++;
}
// 对大小写字母统一处理
input[len - 1] = '\0'; // 结束符
for (int i = 'A'; i <= 'Z'; i++) {
freq[i] += freq[i + ('a' - 'A')];
}
} else {
perror("Error reading from standard input");
}
}
```
3. **将结果写入文件**:
循环遍历字符频率数组,将每对字符和其对应的频率写入文件。
```c
void write_to_file(FILE *file, int freq[]) {
for (int i = 0; i < 256; i++) {
if (freq[i] > 0) {
fprintf(file, "%c appears %d times.\n", i, freq[i]);
}
}
}
int main() {
FILE *file = open_or_create_file("char_frequency.txt");
if (file) {
count_chars(gets(input), file); // 从标准输入读取字符串
write_to_file(file, freq);
fclose(file);
}
return 0;
}
```
阅读全文