C语言如何统计文本文件中的单词数?

99ANYc3cd6
预计阅读时长 8 分钟
位置: 首页 C语言 正文

C语言实现文本文件单词统计

下面是一个完整的C语言程序,用于统计文本文件中的单词数量,这个程序会读取用户指定的文本文件,并统计其中的单词总数。

c语言文本文件单词统计
(图片来源网络,侵删)

代码实现

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#define MAX_FILENAME 256
// 判断字符是否为单词分隔符
bool is_word_separator(char c) {
    return isspace(c) || ispunct(c);
}
int count_words_in_file(const char *filename) {
    FILE *file = fopen(filename, "r");
    if (file == NULL) {
        perror("无法打开文件");
        return -1;
    }
    int word_count = 0;
    bool in_word = false;
    int c;
    while ((c = fgetc(file)) != EOF) {
        if (is_word_separator(c)) {
            if (in_word) {
                word_count++;
                in_word = false;
            }
        } else {
            in_word = true;
        }
    }
    // 处理文件末尾可能未计数的单词
    if (in_word) {
        word_count++;
    }
    fclose(file);
    return word_count;
}
int main() {
    char filename[MAX_FILENAME];
    printf("请输入要统计的文本文件名: ");
    if (fgets(filename, MAX_FILENAME, stdin) == NULL) {
        printf("读取输入失败\n");
        return 1;
    }
    // 去除换行符
    size_t len = strlen(filename);
    if (len > 0 && filename[len-1] == '\n') {
        filename[len-1] = '\0';
    }
    int word_count = count_words_in_file(filename);
    if (word_count >= 0) {
        printf("文件 \"%s\" 中的单词数量: %d\n", filename, word_count);
    }
    return 0;
}

代码说明

  1. is_word_separator函数

    • 使用isspace()ispunct()函数判断字符是否为单词分隔符(空格、标点符号等)
  2. count_words_in_file函数

    • 打开并读取指定文件
    • 使用状态机方法跟踪是否在单词中
    • 遇到分隔符时结束当前单词计数
    • 处理文件末尾可能未计数的单词
  3. main函数

    • 获取用户输入的文件名
    • 调用统计函数并输出结果

使用方法

  1. 将代码保存为word_count.c
  2. 编译:gcc word_count.c -o word_count
  3. 运行:./word_count
  4. 输入要统计的文本文件名

示例

假设有一个文本文件example.txt内容如下:

c语言文本文件单词统计
(图片来源网络,侵删)
Hello, world! This is a test file.
It contains multiple words.

运行程序并输入文件名后,输出将是:

文件 "example.txt" 中的单词数量: 10

扩展功能

如果需要更复杂的统计功能,可以考虑:

  1. 统计每个单词出现的频率
  2. 统计不同单词的数量
  3. 忽略大小写
  4. 过滤特定单词

需要这些功能时,可以修改代码或添加辅助函数来实现。

c语言文本文件单词统计
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
数据表如何高效管理?
« 上一篇 04-25
织梦图片如何自适应手机显示?
下一篇 » 04-25

相关文章

取消
微信二维码
支付宝二维码

目录[+]