C 统计英文文本word(单词)个数

简介: 关于状态机的文章请自行百度,这里主要是在统计时用到了2个状态,IN是代表字符是属于word内,OUT代表当前字符不属于word内,那么什么时候word的个数需要增加1呢,即是status从OUT到IN时(说明当前指针马上就要走到word里了)

状态机的使用

关于状态机的文章请自行百度,这里主要是在统计时用到了2个状态,IN是代表字符是属于word内,OUT代表当前字符不属于word内,那么什么时候word的个数需要增加1呢,即是status从OUT到IN时(说明当前指针马上就要走到word里了)

6fe23d2fe723a37b562cba6b555d17df_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYWJjZDU1MjE5MTg2OA==,size_20,color_FFFFFF,t_70,g_se,x_16.png

源码

#include <stdio.h>
#define IN 1
#define OUT 0
#define INIT OUT
int is_spliter(const char c)
{
    if ((' ' == c) || ('\n' == c) || ('\t' == c) ||
        ('\"' == c) || ('\'' == c) || ('+' == c) ||
        (',' == c) || ';' == c || '.' == c)
    {
        return 1;
    }
    return 0;
}
int count_word(const char *filename)
{
    int status = INIT;//默认状态
    int word = 0;
    FILE *file = fopen(filename, "r");
    if (!file)
        return -1;
    char c;
    while ((c = fgetc(file)) != EOF)
    {
        //当然,如果要做的好一点,肯定需要
        //正则表达式来判断一个字符是否是分隔符,这里就列出一些常见情况
        if (is_spliter(c))
        {
            status = OUT;
        }
        else if (status == OUT)//从分隔符进入到word的开始
        { 
            status = IN;//在word内的状态
            ++word;
        }
    }
    return word;
}
int main(int argc, char *argv[])
{
    if (argc < 2)
        return -1;
    printf("count:%d\n", count_word(argv[1]));
    return 0;
}

说明

源码出自-腾讯课堂-king老师-linux基础课程

思考:如果一个word最后带-并且换行的情况


相关文章
|
1月前
|
Go
PTA-统计一行文本的单词个数
统计一行文本的单词个数
25 2
|
1月前
|
安全
如何快速断行、分割行、切割行、换行、限制每行字数、平均分割每行字数、序号自动换行、关键字断行等等内容格式整理
该工具用于文本格式处理,能调整每行字数、进行内容断行、提取特定格式内容等。在示例中,展示了如何将一段“交通安全教育”文字按30字每行分隔,并整理出带序号的格式。工具支持序号断行和多级序号设置,适用于笔记整理、文档格式化和内容布局优化,能提升工作效率。下载工具可从百度网盘(提取码:qwu2)或蓝奏云(提取码:2r1z)获取。
|
Python
python字符串切分连接(输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。)
python字符串切分连接(输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。)
985 0
|
10月前
|
算法
字符矩阵内单词搜索
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
43 0
7-4 统计一行文本的单词个数
7-4 统计一行文本的单词个数
86 0
2114. 句子中的最多单词数
一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。 给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子 。 请你返回单个句子里 单词的最多数目 。
72 0
怎么去掉word文档中的数字
怎么去掉word文档中的数字
221 0
|
测试技术
寻找出现次数最多的字母(单词分析)
寻找出现次数最多的字母(单词分析)
|
缓存 分布式计算
六十四、Spark-分别统计各个单词个数及特殊字符总个数
六十四、Spark-分别统计各个单词个数及特殊字符总个数
六十四、Spark-分别统计各个单词个数及特殊字符总个数