查找高频词c语言代码
时间: 2024-08-13 14:05:27 浏览: 138
在C语言中,查找文本中的高频词通常涉及到字符串处理和字典(哈希表)的数据结构。以下是一个简单的示例代码,使用哈希表(这里用数组表示,因为C语言没有内置哈希表类型)来统计单词出现的频率:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_WORDS 100 // 假设最多有100个不同的单词
#define MAX_CHAR 100 // 字符串最大长度
typedef struct {
char word[MAX_CHAR];
int count;
} Word;
Word words[MAX_WORDS]; // 存储单词及其计数的数组
int num_words = 0; // 当前已存储单词的数量
// 函数来处理字符串,分割成单词并更新频率
void process_string(char *str) {
char *word = strtok(str, " "); // 以空格分隔单词
while (word != NULL) {
int i;
for (i = 0; i < num_words; i++) {
if (!strcmp(words[i].word, word)) { // 如果单词已存在
words[i].count++;
break;
}
}
if (i == num_words) { // 如果单词不存在,添加新的
strcpy(words[num_words].word, word);
words[num_words].count = 1;
num_words++;
}
word = strtok(NULL, " ");
}
}
int main() {
char input[1000];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// 去除末尾的换行符
input[strcspn(input, "\n")] = '\0';
process_string(input);
printf("\nTop 5 most frequent words:\n");
for (int i = 0; i < min(num_words, 5); i++) {
printf("%s: %d\n", words[i].word, words[i].count);
}
return 0;
}
```
阅读全文