word count

需求分析:

1.通过输入文件名,实现文件内容读取

2.统计文件内容字符数、行数、空行数、每行字符数、单词查找

如何实现:

1.文件部分

在大一上c语言时,简单的学了学文件,于我而言,不是很常用。于是百度了下文件读取,感觉调用库函数,棒棒的!

    fseek(fp, 0L, SEEK_END); //把指针移动到文件的结尾 ,获取文件长度
    int len = ftell(fp); //获取文件长度
    pBuf = new char[len + 1]; //定义数组长度
    rewind(fp); //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错
    fread(pBuf, 1, len, fp); //读文件
    pBuf[len] = 0; //把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束

 

把文件读到数组中可以基本解决,若读到文件尾,文件指针需要前移的问题,不过我还是比较喜欢用指针,代码中rewind(fp);就可以移动文件指针

在每次读文件前,粘进去,特别好。

2.行数、空行数

这就需要回车标志“\n”了,(ch = getc(fp)) != '\n',经过判断sum++,行数就可以正确输出,还有空行,那就要判断整行字符除了"\n",其他字符都不需要有了呗,也就是说当整行字符为0时,就是空行了。为了方便查看字符个数,我添加了每行有多少字符的功能,要注意字符数要注意剪掉前几行的字符数。

    for (; num<=len;)
    {
        if ((ch = getc(fp)) != '\n')
        {
            cout << ch;
            num++;
        }
        else
        {
            cout << "\n";
            sum++;
            cout <<""<< sum << "" << "一共有" <<num-1-front<< "个字符" << "\n";
            if (num - 1 - front == 0)
                empty++;
            front = num;
        }    
    }

 

3.单词查找:

以我对单词的理解,由字母组成,那就可以通过ASCII码来表示,其范围为(ch>='A'&&ch<='Z') || (ch >= 'a' && ch <= 'z')。将其存在数组中,记录长度,在数组末尾加“\0”,便于查找。若想实现单词出现在哪一行,在比较成功后,count++就可以了。

    while ((ch = getc(fp)) != EOF)
    {  //EOF 表示文件结束
        if (ch  == '\n')
            line++;
        if ((ch>='A'&&ch<='Z') || (ch >= 'a' && ch <= 'z'))
        {
            temp[m] = ch;
            m++;
        }
        else
        {
            temp[m] = '\0';
            if ((strcmp(find, temp)) == 0)
            {
                count++;
                if(flag==0)
                    cout << "出现在第" << line ;
                else
                    cout << "" << line ;
                flag = 1;
            }
            m = 0;
        }

总的来说,这个程序不是太难,但要考虑的东西很多,再出现问题的时候,耐下心来,认真调试一下,就会找到出错的地方。

 

转载于:https://www.cnblogs.com/wxl530/p/5308976.html

### DSI3中的Symbol CountWord Count区别及计算方法 在数据处理和编程环境中,DSI3(Data Stream Interface 3)涉及两种不同的计数方式:symbol countword count。 #### Symbol Count Symbol count 是指在一个特定的数据流中所包含的符号数量。这些符号可以是字符、数字或其他任何定义好的标记单位。对于某些协议来说,这可能意味着单个字节或更复杂的编码单元。例如,在ASCII码表里,每个可打印字符都被视为一个单独的符号[^1]。 ```python def calculate_symbol_count(data_stream): """ 计算给定数据流中的符号总数。 参数: data_stream (str): 输入的数据字符串 返回: int: 符号的数量 """ return len(data_stream) ``` #### Word Count 相比之下,word count 则是指一段文本内单词的数量。通常情况下,“词”的定义取决于具体的应用场景;一般而言,默认是以空白符作为分隔来识别词语边界。然而,在不同上下文中也可能存在其他约定俗成的标准用于界定何谓“一词”。 ```python import re def calculate_word_count(text): """ 使用正则表达式统计输入文本中的单词数目 参数: text (str): 待分析的文字内容 返回: int: 单词的数量 """ words = re.findall(r'\b\w+\b', text.lower()) return len(words) ``` 两者之间主要差异在于计量对象的不同——一个是针对基本组成元素即符号本身进行计数,另一个则是基于更高层次的语言学概念即词汇来进行量化描述。因此,在实际应用当中应当依据具体的业务需求选择合适的度量手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值