软件工程个人第二小项目——wc

github源码和工程文件地址:https://github.com/HuChengLing/wc

基本要求:要实现wc的基本功能即文件中字符数、单词数、行数的统计。

主要功能:文件中字符数、单词数、行数的统计和注释行统计。

设计思想:将文件中的一行字符读完来统计行数,然后运用字符数组再去分别统计字符数和单词数。

程序代码:

#include<stdlib.h>
#include<stdio.h>
#include<string>
void signalcount(char *Filename);
void main()
{

    int c = 0, w = 0, l = 0;
    int signline = 0;
    FILE *fp;
    char fileName[80];
    char ch[1024];
    //bool inword = false;//字符在单词中,inward等于ture
    printf("please input fileName:");
    gets_s(fileName);
    fp = fopen(fileName, "r");
    if (fp == NULL)
    {
        printf("can‘t open file %s\n", fileName);
        getchar();
        exit(1);
    }
    while (!feof(fp))
    {
        fgets(ch, 1024, fp);
        l++;
        int length = strlen(ch);
        for (int i = 0; i < length; i++)
        {
            //判断是不是空格不是的话在while里面i++执行判断到下一个空格的出现或是结束
            if (ch[i] != ‘ ‘)
            {
                w++;
                //if ((ch[i] > ‘0‘&&ch[i]<‘9‘ || ch[i]>‘a‘&&ch[i], ‘z‘ || ch[i] > ‘A‘&&ch[i] < ‘Z‘) && ch[i] != ‘ ‘)
                    //c++;
                while (ch[i] != ‘ ‘&&ch[i] != ‘\0‘)
                {

                    if ((ch[i] > ‘0‘&&ch[i]<‘9‘ || ch[i]>‘a‘&&ch[i], ‘z‘ || ch[i] > ‘A‘&&ch[i] < ‘Z‘) && ch[i] != ‘ ‘&&ch[i] != ‘\n‘)
                        c++;
                    i++;

                }
            }

        }
    }
        printf("一共有:%d行 %d个单词 %d个字符", l, w, c);
        signalcount(fileName);
        fclose(fp);
        system("pause");
}

void signalcount(char *filename)
{
    int len = 0, i = 0,signline = 0;
    FILE *fp;
    char str[1000];
    fp = fopen(filename, "r");
    if (fp == NULL)
    {
        printf( "请在文件中添加内容\n") ;
        exit(-1);
    }
    while (!feof(fp))
    {
        fgets(str, sizeof(str), fp);
        len = strlen(str);
        for (i = 0; i<len; i++)
        {
            if ((str[i] == ‘/‘&&str[i + 1] == ‘/‘) || (str[i] == ‘/‘&&str[i + 1] == ‘*‘))
            {
                signline++;
                break;
            }
        }
    }
    fclose(fp);
    printf( "注释行数%d行\n", signline);
}

自己虽然是自己写了一些但是自己也借鉴了许多网上的代码。而且现在还存在着不能读汉字的bug有待改进。

时间: 2024-08-30 16:16:24

软件工程个人第二小项目——wc的相关文章

《小团队项目管理》第二问 --- 项目经理是救火队长?

在一些企业中常常会发生这种事情,公司业务繁忙,项目堆积成山,开发团队总共也就六七个人,恨不得一个人当两个人使,行内话称:"女人当做男人使,男人当做牲口使",急于改变现状的项目经理更是焦头烂额,满脑子的念头就是"怎么办?怎么办???".好吧看来我须要參与进来了,于是挽起袖子開始了一次<速度与激情>的编程之旅. 那我问你,你的准备工作做好了吗?你是最初接触项目需求的人,可能在你的脑海里,你的笔记本上画满了各种各样的符号,图示,用例,你的电脑上有各种各样的UM

第二个项目:WC

第二个项目:Word Count 一.主要功能:文件中字符数.单词数.行数的统计 二.github源码和工程文件地址:https://github.com/miniyuan222/the-second 三.代码展示: #include<stdio.h>#include<string.h>#include<stdlib.h>int readData(char filename[]);void writeData(int n, int x);int hanzi(char f

个人小项目——Java实现WC功能

这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文本实现一次重写,用String类的replace方法将空格用其他字符替换,然后可以实现字母数,单词数和行数的统计.另一种方法没有重新写文本,直接在缓冲区中处理文本,除上面三个之外还统计了空格数,字符总数和标点符号数. 2.优缺点比较 方法一可以统计出空行,而方法二由于是使用bufferedReade

4-20 这是一次失败的小项目 (单链表应用--通讯录)

昨天和今天一直在磕这个小项目,由于近来学习了单链表的相关知识,所以想趁周末做一个通讯录的小项目,主要功能就是增,删,插入. 但是意外重重 在做这个小项目的过程中有几点深入的体会: 应该深入学习一下软件工程,了解软件是如何设计的,因为在写完功能之后再写主界面时,感觉十分混乱.没有办法画一个清晰的逻辑框图,也可能是原来的项目都是有人设计好,第一次自己去设计,要多加练习: 深入学习一下c语言标准库,从而对系统定义的函数有更好的操作性: 先上一下这个失败的代码吧 1 #include<stdio.h>

Android小项目之 where are you 监控

第一个小项目,实现监控短信,电话,以及响铃,震动,监控位置还没添加,会后续更新,先把代码贴上来 第一个是一个登录界面: xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RelativeLayout1" a

轮播特效小项目总结

首先谈谈关于还原设计稿学到的一些东西,比如说网页设计稿和交互效果做好了,拿给我们在网页上实现,那如何实现呢,我就说说自己的鄙见吧. 第一,思考整个设计图的层次,比如说分别由哪些部分构成,针对这些"块",怎么设计div的结构,怎么把静态页面有条理的编写出来. 第二,思考如何实现设计图的交互效果,在逻辑上分析,比如用JS绑定哪些事件,采用什么样的函数实现怎么样的效果等等. 第三,代码的优化性考虑,怎么让代码简洁明了,方便维护. 以上就是我现在阶段对页面还原的一些看法,也许比较浅显,我也希望

小项目特供 贪吃蛇游戏(基于C语言)

C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第二天写了第二版和第三版. 相信C语言写个小游戏或小项目是大多数计算机相关专业的学生都做的事情,但是作为一个数学专业的学生,我们教研室的老师对C语言的要求也就比较低了,大一没有让我们做个小项目实践一次.至今为止用C/C++做过的三个小项目(大作业),一个是外校同学让我帮忙写的学生信息管理系统(天呐,这

Android小项目蓝牙电子钟

Android小项目蓝牙电子钟 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android蓝牙电子钟应用程序通过蓝牙设备发送消息给多功能数字电子钟,实现更新电子钟时间.设定电子钟监控时间.设定电子钟闹钟时间和调整电子钟时间误差等功能. 该应用程序的UI主要基于http://blog.csdn.net/kangweijian/article/details/43404801. 本章主要讲解蓝牙设

读《构建之法 现代软件工程(第二版)》

1.读后感: 对于计算机相关专业的学生来说,我们学习了很多的专业课程,像编程语言.算法.数据结构.编译原理.软件工程等.但是我相信很多同学和我一样仍然对于我们现在学到的课程在之后有什么用心存疑惑.也就是说,大家都觉得理论和实践之间有着不可逾越的鸿沟.然而在读到邹欣老师的这本书<构建之法 现代软件工程(第二版)>的时候,我解决了我一直纠结的这个问题. 因为作业要求,第一遍是快速阅读,虽然仍然对书里的一些内容有些疑问,但是仍然觉得这本书有很多特点: (1)文字+图画:很多专业书都有一个问题就是整本