下面的代码可以在codeblocks下运行,按照提示输入一个路径就可以知道自己在这个路径下的代码量了。我的有效代码为64572行,比想象中少好多啊,有效代码指的是出去一行上只有一个{}的那些行。欢迎留言。。。

#include <direct.h>
#include <string>
#include <vector>
#include <iomanip>
#include <ctime>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char str[1000];
int allline,effectline,big,small,allchar,visiblechar;
int filenum;
string bigfile,smallfile;
void count(string filename)
{
    freopen(filename.data(),"r",stdin);
    filenum++;
    int line=0;
    while(gets(str))
    {
        allline++;
        line++;
        bool flag=false;
        for(int i=0; str[i]; i++)
        {
            if(!(str[i]==' ' || str[i]=='{' || str[i]=='}' || str[i]=='\t'))
            {
                flag=true;
                visiblechar++;
            }
            if(str[i]=='{' || str[i]=='}')visiblechar++;
            allchar++;
        }
        if(flag)effectline++;
    }
    if(big<line)
    {
        bigfile=filename;
        big=line;
    }
    if(small>line)
    {
        smallfile=filename;
        small=line;
    }
    fclose(stdin);
    freopen("CON","r",stdin);
}
void getFiles(string path)
{
    //文件句柄
    long hFile = 0;
    //文件信息
    struct _finddata_t fileinfo;
    string p;
    if((hFile=_findfirst(p.assign(path).append("\\*").c_str(),&fileinfo))   !=   -1)
    {
        do
        {
            //如果是目录,迭代之
            //如果不是,加入列表
            if((fileinfo.attrib&_A_SUBDIR))
            {
                if(strcmp(fileinfo.name,".")!=0&&strcmp(fileinfo.name,"..")!=0)
                    getFiles(p.assign(path).append("\\").append(fileinfo.name));
            }
            else
            {
                string filename=p.assign(path).append("\\").append(fileinfo.name);
                int t=filename.find(".cpp");
                if(filename.length()-t==4)
                    count(filename);
                t=filename.find(".java");
                if(filename.length()-t==5)
                    count(filename);
            }
        }
        while(_findnext(hFile,&fileinfo)==0);
        _findclose(hFile);
    }
}
int main()
{
    allline=effectline=big=allchar=visiblechar=filenum=0;
    small=0x7fffffff;
    printf("请输入路径\n格式:\nE:\\yy\n");
    string path;
    cin>>path;
    getFiles(path.data());
    printf("<< %s >>下共有<< %d >>个源文件\n",path.data(),filenum);
    printf("其中所有代码行数为<< %d >>行\n",allline);
    printf("有效代码行数为<< %d >>行\n",effectline);
    printf("每个文件平均行数为<< %d >>行\n",allline/filenum);
    printf("代码最长的文件是 << %s >> 共有代码<< %d >>行\n",bigfile.data(),big);
    printf("代码最短的文件是 << %s >> 共有代码<< %d >>行\n",smallfile.data(),small);
    printf("所有的字符数<< %d >>个\n",allchar);
    printf("其中可见字符数<< %d >>个\n",visiblechar);
    printf("平均每个文件可见字符数<< %d >>个\n",visiblechar/filenum);
    return 0;
}

转载于:https://www.cnblogs.com/AbandonZHANG/archive/2012/11/07/2759639.html

测测你写了多少行代码【转】相关推荐

  1. 《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  2. python实现统计你一共写了多少行代码

    程序员要保证一定的代码量就必须勤奋的敲代码,但怎么知道自己一共写了多少代码呢,笔者用python写了个简单的脚本,遍历所有的.java,.cpp,.c文件的行数,但是正如大家所知,java生成了许多代 ...

  3. webstorm代码行数统计_来测试下 2019 你一共写了多少行代码?

    写啊写代码,2019 你都写了多少行代码呢 自己动手实现一个代码统计工具 导入所需的库 这个程序需要用到的库有:os,time 这两个库都是 Python 自带的,所以我们直接 import 就行 i ...

  4. python写百行代码可运行_56 岁潘石屹学俩月 Python ,写下百行代码

    原标题:56 岁潘石屹学俩月 Python ,写下百行代码 By 超神经 内容导读:跨界王潘石屹在近期迷上了编程,不仅高调宣布学习 Python,拜老师,还隔三差五晒出自己的「编程课作业」,和网友进行 ...

  5. 来测试下 2019 你一共写了多少行代码?

    写呀写代码,2019 你都写了多少行代码呀 文章目录 自己动手实现一个代码统计工具 导入所需的库 定义要读取的文件地址 指定你要读取的文件类型 遍历目录 / 文件 代码分析 读取代码行数 代码测试 全 ...

  6. 女神相册密码忘记了,我只用Python写了20行代码

    ​视频地址 我用20行代码,帮女神破解相册密码 一.事情是这样的 今早上班,公司女神小姐姐说,她去年去三亚旅游的照片打不开了 好奇问了一下才知道. 原来是,她把照片压缩了,而且还加了密码. 但是密码不 ...

  7. 写过25W行代码,3个操作系统:我如何做架构设计,来降低代码复杂度?

    来源| 美团技术团队 作者| 政华,顺谱,陶鑫 导读:本文是作者阅读John Ousterhout的<A Philosophy of Software Design>之后,结合自己的工作经 ...

  8. python画人脸编程怎么写_Python 40行代码实现人脸识别功能

    前言 很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了.这些人里包括曾经的我自己.其实如果如果你不是非要深究其中的原理,只是要实现这 ...

  9. 悲剧!他写了20000行代码,却连6岁孩子都比不过!

    这个春天注定是不平静的,一场突如其来的疫情让很多人一夜之间丢了饭碗.老同学L就是其中之一. 年前,他还开心的在群里说发了年终奖请大家吃饭,一个月不到,他期待的奖金没了,公司业务调整,他成了被优化的30 ...

  10. 女神相册密码忘记了,我只用Python写了20行代码就破解了!

    一.事情是这样的 今早上班,公司女神小姐姐说,她去年去三亚旅游的照片打不开了 好奇问了一下才知道. 原来是,她把照片压缩了,而且还加了密码. 但是密码不记得了,只记得是一串6位数字. 话说照片压缩率也 ...

最新文章

  1. Oracle中的date与timestamp
  2. 种草莓【字符串】【动态规划】
  3. Spring/SpingMVC常见问题总结
  4. ServiceComb
  5. P4146 序列终结者 平衡树 + lazy维护
  6. java工作面试必备知识 Java常用类库与技巧
  7. 项目添加GPUImage
  8. 感知机PLA算法实现[转载]
  9. 表级约束和列级约束(二十)
  10. 游戏开发之游戏策划的基本原则
  11. dubbo内核简介(附部分源码解读)
  12. 红黑树 一张导图解决红黑树全部插入和删除问题 包含详细操作原理 情况对比
  13. Hash表的平均查找长度ASL计算方法
  14. PB语言实现反射机制
  15. 从 MVC 到使用 ASP.NET Core 6.0 的Minimal API
  16. tensorflow roadshow 全球巡回演讲 会议总结
  17. 机器人搭建记录 HoshinoBot
  18. 使用express封装一个简单的http代理服务器以及手动设置Access-Control-Allow-Origin解决跨域问题
  19. 5G网络中的缩略语与简写
  20. WordPress支持ppt一键上传

热门文章

  1. Java(38)_BorderLayout布局
  2. oracle not in 改为 not exist
  3. 如何将数据渲染到页面上?
  4. 1006 换个格式输出整数 (15)
  5. 转载:C#7.0新特性(VS2017可用)
  6. linux的环境变量相关的小记
  7. 曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑
  8. Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
  9. C# 时时监听目录文件改动
  10. Java ME SDK 3.0.5发布!