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小时内删除。
发表评论