c语言统计单词出现频率
时间: 2025-01-01 08:36:02 浏览: 9
在 C 语言中统计单词出现频率通常需要遍历字符串数组或文件内容,对每个单词进行计数。这里是一个简单的步骤和伪代码示例:
1. **读取输入**:首先,你需要从文件或用户输入中读取文本数据。可以使用 `fgets` 或 `fscanf` 函数读取文件,用 `getchar` 逐字符读取标准输入。
```c
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
// 处理打开文件失败的情况
}
```
2. **分割单词**:接着,将读取的内容按空格或特定分隔符拆分成单词。可以使用字符串处理函数如 `strtok` 或手动实现一个函数。
```c
char word[50]; // 假设单词长度不超过50
while ((word = strtok(line, " ")) != NULL) { // line 为当前行或缓冲区
// 对 word 进行处理,比如转换为小写、移除标点等
}
```
3. **计数存储**:创建一个结构体或哈希表来保存单词及其对应的出现次数。例如,可以使用一个动态大小的数组,其中每个元素包含单词和计数。
```c
struct WordCount {
char word[50];
int count;
};
// 初始化一个数组或者链表用于存放单词及其计数
WordCount counts[MAX_WORDS];
int current_count = 0;
```
4. **更新计数**:每次遇到新单词时,检查数组是否已满,如果未满则增加计数,否则添加新的计数项并清零旧的计数项。
```c
for (current_count; current_count < MAX_WORDS && strcmp(counts[current_count].word, word) != 0; current_count++) {}
counts[current_count].count++;
```
5. **输出结果**:最后,遍历计数数组并打印每个单词及其出现次数。
```c
for (int i = 0; i < current_count; i++) {
printf("%s appears %d times.\n", counts[i].word, counts[i].count);
}
```
阅读全文