c语言 统计单词
在C语言中,统计单词的数量可以通过以下步骤完成:
初始化计数器变量为0
读取文本文件的每一行
对于每一行,将每个单词拆分并检查是否为新单词(即之前未出现过的单词)
如果是新单词,增加计数器变量
返回计数器的值
以下是一个简单的C语言程序,用于统计文本文件中的单词数量:
c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_WORDS 1000000 // 定义最大单词数
#define MAX_WORD_LEN 100 // 定义最大单词长度
int main() {
FILE *file;
char line[1000];
char *word = malloc(MAX_WORD_LEN * sizeof(char));
int count = 0;
int i;
int is_new_word = 1;
char *words[MAX_WORDS];
int num_words = 0;
file = fopen("", "r"); // 打开文件
if (file == NULL) {
printf("无法打开文件\n");
return -1;
}
while (fgets(line, sizeof(line), file)) { // 读取每一行
for (i = 0; i < strlen(line); i++) { // 遍历每一行的每个字符
if (isspace(line[i])) { // 如果遇到空格,表示一个单词结束
is_new_word = 1; // 重置is_new_word标志为1,表示是新单词
words} else if (isalpha(line[i])) { // 如果遇到字母,检查是否为新单词
if (is_new_word) { // 如果is_new_word为1,表示是新单词
words[num_words] = malloc(MAX_WORD_LEN * sizeof(char)); // 为新单词分配内存空间
strcpy(words[num_words], word); // 将当前单词复制到新分配的内存空间中
num_words++; // 增加单词数量
is_new_word = 0; // 重置is_new_word标志为0,表示不是新单词了
} else { // 如果is_new_word为0,表示不是新单词,继续读取下一个字符到当前单词中
word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾
}
} else { // 如果遇到其他字符,重置当前单词并继续读取下一个字符到当前单词中
word[0] = '\0'; // 重置当前单词为空字符串
word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾
}
}
}
fclose(file); // 关闭文件
printf("总共的单词数量: %d\n", num_words); // 输出总单词数量
for (i = 0; i < num_words; i++) { // 输出每个单词及其出现次数(这里只输出一次)
printf("%s\n", words[i]);
free(words[i]); // 释放内存空间
}
free(word); // 释放内存空间
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。