统计C语言程序行数
补充前一篇中统计C语言程序行数的程序
写得比较匆忙,可能有些失误,等弄明白GitHub的用法并完善程序后再补充完整代码链接
没有写成函数,但经过简单修改可以作为一个计算或判断函数使用
判断算法主要为以下几点
- 如果是' '、'\r'、'\t'则直接跳过;
- 如果是'\n'则判断该行是否有字符,没有跳过;
- 对于'//'类的注释,判断注释符号前是否有效,无效则跳过;
- 对于'/ * '类的注释,则寻找下一个' * /',如果中间遇到'\n',则判断该行是否有效,例如有效代码与'/ * '在同一行时,该行应该计算在内。
对于文件读写,暂时没有实现文件夹遍历,文件读写及所需头文件代码如下
#include<iostream>
#include<fstream>
#include<streambuf>
using namespace std;
ifstream a("file.txt");
string s((istreambuf_iterator<char>(a)),istreambuf_iterator<char>());
下面是判断程序主要代码
int main()
{
int i,j,k,n,m,x,y;
i=0;
j=0; //判断该行是否有效
k=0; //判断'/*'类的注释中是否有换行
n=0;
m=s.length();
while (i<m)
{
if ((s[i]==' ')||(s[i]=='\r')||(s[i]=='\t'))
{
i++;
continue;
} //第一类
if (s[i]=='\n')
{
if (j==1)
{
n++;
j=0;
}
i++;
continue;
} //第二类
if ((s[i]=='/')&&(s[i+1]=='/')&&(i<m-1))
{
if (j==1)
{
n++;
j=0;
}
i++;
while ((i<m)&&(s[i]!='\n')) i++;
i++;
continue;
} // '//'类注释
if ((s[i]=='/')&&(i<m-1))
{
if (s[i+1]=='*')
{
i+=2;
while (i<m)
{
if (s[i]=='\n')
{
if (k==0)
{
if (j==1)
{
n++;
j==0;
}
k==1;
}
}
if ((s[i]=='*')&&(i<m-1))
{
if (s[i+1]=='/')
{
i++;
break;
}
}
i++;
}
k==0;
i++;
continue;
}
} // '/*'类注释
j=1;
i++;
}
if (j==1) n++; //最后一行有时没有'\n'
统计C语言程序行数的更多相关文章
- VS里统计整个解决方案代码行数的方法
VS里统计整个解决方案代码行数,在查找里输入正则表达式:b*[^:b#/]+.*$.如下图所示: 结果如下图所示:
- Android Stduio统计项目的代码行数
android studio统计项目的代码行数的步骤如下: 1)按住Ctrl+Shift+A,在弹出的框输入‘find’,然后选择Find in Path.(或者使用快捷键Ctrl+Shift+F) ...
- linux 统计某个文件的行数
今日思语:迷茫的时候,看看身边那些优秀的人,他们还在那么努力,或许你就可以有点方向和动力了 在linux系统中,我们经常会对文件做行数统计,可以使用如下命令 wc -l file #file为具体的文 ...
- 统计C/C++代码行数
近日在写一个统计项目中C/C++文件(后缀名:C/CPP/CC/H/HPP文件)代码行数的小程序.给定包含C/C++代码的目录,统计目录里所有C/C++文件的总代码行数.有效代码行数.注释行数.空白行 ...
- shell 统计某个文件的行数命令
语法:wc [选项] 文件- 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- 【SQL】统计所有表的行数
环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...
- excel 宏循环行数据 ,Excel统计所有sheet数据行数 VBA
Sub fun1() '统计每一个sheet有多少行数据 Set s1 = Sheets("Sheet1") 'totalok = 0 To Sheets.Count s1.Cel ...
- R统计数据框的行数
如下三种方法可以实现 使用dim函数 dim(dataframe)[0] 使用nrow函数 nrow(dataframe) 使用length函数统计 length(dataframe[,1])
- 统计VS2013中有效行数
将鼠标放在解决方案处,按下ctrl+shift+F b*[^:b#/]+.*$(带前面的using)^b*[^:b#/]+.*$
随机推荐
- JDK1.8源码阅读系列之一:ArrayList
本篇随笔主要描述的是我阅读 ArrayList 源码期间的对于 ArrayList 的一些实现上的个人理解,有不对的地方,请指出- 先来看一下 ArrayList 的继承图: 由图可以看出,Array ...
- eclipse中svn插件的安装和tortoiseSVN的安装
在项目的开发中一般都需要用到版本控制,其中用的比较多的就是svn(subVersion),svn的使用既可以以插件的形式,也可以以客户端的形式使用.今天就介绍一下eclipse中svn插件的2种安装方 ...
- 【Java每日一题】20170112
20170111问题解析请点击今日问题下方的"[Java每日一题]20170112"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 分别使用Hadoop和Spark实现二次排序
零.序(注意本部分与标题无太大关系,可直接调至第一部分) 既然没用为啥会有序?原因不想再开一篇文章,来抒发点什么感想或者计划了,就在这里写点好了: 前些日子买了几本书,打算学习和研究大数据方面的知识, ...
- 一键安装Redmine
群英汇·项目管理系统:http://www.ossxp.com/HelpCenter/00040_Redmine 其中包含中文说明及管理手册 一键安装下载:http://bitnami.org/sta ...
- centos搭建svn服务器
1.在centos6.5上面搭建svn服务器,安装svn服务器:yum install subversion 2.在任意目录下创建仓库目录,这里放在/data/mypros目录下 3.执行命令:svn ...
- 如何运用xp_cmdshell 执行多行cmd命令
因为需要利用sql 脚本调用外部程序,所以尝试xp_cmdshell 命令,发现其默认只能执行一行命令,最后找到了下面方法: 将多行cmd 命令处理成bat文件,然后直接利用所在路径+文件来执行: ...
- Python将列表中的string元素进行类型转换
例如 将 a=['1','2.0','3L'] 转换为 a=[1,2.0,3L] 只需 map(eval,['1','2.0','3L']) 即可 eval(expression[, globals[ ...
- zabbix 布署实践【3 proxy安装】
使用openstack在生产环境创建的一台虚拟机 环境 CentOS7 4核4G内存40G硬盘 IP:10.120.150.150 镜像默认关闭防火墙,selinux ,NetworkManage ...
- SEO之关键词选择
在网站优化中,关键词应该是奠基石,选择好关键词的重要性也不言而喻了.怎样选择合理化的关键词呢?这个是我今天了解到的. 1.选择的关键词首先是有人搜索过的.没人搜索的词优化就是浪费时间. 2.做有效流量 ...