zoukankan      html  css  js  c++  java
  • wordcount程序

        wordcount程序算是相比于前几次作业来说比较难得一个作业了。进行了一次真的自己编写程序。WC程序实现了对txt文件中的数据的计数,算出程序中有多少单词、字符数以及行数。这次的程序编程是采用的C语言进行编写的,再编写的时候还进行了将文件部分整体复习了一遍。回顾了一些已经生疏的东西。下面看一下程序代码。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<windows.h>
    #define IN 1
    #define OUT 0
    void main() {
    FILE *fp;
    int length;
    fp = fopen("wang.txt", "r");//打开要计数的文件
    if (fp == NULL)
    {
    printf("can not open file");
    exit(0);
    }
    fseek(fp, 00, SEEK_END);
    length = ftell(fp);
    printf("%d ", length);//确定所要查找的文件中总字符数长度,并在屏幕中显示出来
    rewind(fp);
    char str[100000], c;
    fread(str, sizeof(char), length, fp);//从文件中读取所有的字符到str序列
    int i, num1 = 0, num2 = 0, num3, num4=0, word = OUT;
    for (i = 0; (c = str[i]) != ''; i++)
    {
    if (c == ' ')//判断字符中单词数
    {
    num2++;
    word = OUT;
    }
    else
    {
    if (word == OUT)
    {
    word = IN;
    num1++;
    }
    }
    if ((c = str[i]) == ' ')
    {
    num4++;
    }
    }
    num3 = length - num2-num4*2;//字符数
    num4++;//行数
    fclose(fp);
    printf("空格数为%d ", num2);
    printf("单词数为%d 行数为%d 字符数为%d ", num1, num4, num3);
    system("pause");

    }

    该程序中主要部分已经做了一些相关注释。WC程序,该算法的程序流程大致是选定txt文件,然后读取其中的字符数加入到其中的一个数组中;然后在数组中根据for循环进行行数,字符数,单词数的计数。

    字符转移到数组主要分成两个部分,第一部分先确定我们文件中的数据的长度,利用fseek函数判断指针;第二部分利用数据长度把所有的字符一次性全部读入到str数组中,利用fread函数

    判断行数利用的是for循环挨个进行字符的判断,判断数组中的 个数,然后根据 的个数确定行数,用num4表示

    空格数的判断也是利用for循环确定字符中共有多少个空格字符,用num2表示

    单词数的个数是利用两个空格之间为一个单词的算法来确定的,具体算法即for循环中第一个if语句,用num1表示

    字符数的判断则可利用总字符数,行数,还有空格数通过推导得出num3=length-num2-num4*2

    程序已经介绍完了,下面具体演示一下成果吧。这里以wang.txt为例进行演示,共三组测试数据:

    第一组

    第二组:

    第三组:

    三组测试数据如上。

    代码部分已经上传至coding上,coding上程序代码为最初的原版,没有添加注释,博客中代码为更新后的有注释代码。

  • 相关阅读:
    WEB引入Google思源黑体
    Linux安装最新版Node.js
    JS判断值是否是数字
    高效jQuery的奥秘
    一个Web前端工程师或程序员的发展方向,未来困境及穷途末路
    javascript 模块化 (切记:学习思想)
    学习 正则表达式 js java c# python 通用
    Promise如何解决回调地狱
    VSCode 开发插件 推荐
    js移动端自适应动态设置html的fontsize
  • 原文地址:https://www.cnblogs.com/sunbuqiao/p/5312227.html
Copyright © 2011-2022 走看看