zoukankan      html  css  js  c++  java
  • 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.行数、空行数

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

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

     

    3.单词查找:

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

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

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

  • 相关阅读:
    MAC记住 git的用户名密码
    webpack初学踩坑记
    __dirname和__filename和process.cwd()三者的区别
    webpack
    日期格式在ios中的兼容性
    php实现导出excel功能
    node 之koa项目学习
    nodejs之socket.io 私发消息和选择群组发消息
    nodejs之socket.io 聊天实现
    mongoDB基础语法
  • 原文地址:https://www.cnblogs.com/wxl530/p/5308976.html
Copyright © 2011-2022 走看看