补充前一篇中统计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语言程序行数的更多相关文章

  1. VS里统计整个解决方案代码行数的方法

    VS里统计整个解决方案代码行数,在查找里输入正则表达式:b*[^:b#/]+.*$.如下图所示: 结果如下图所示:

  2. Android Stduio统计项目的代码行数

    android studio统计项目的代码行数的步骤如下: 1)按住Ctrl+Shift+A,在弹出的框输入‘find’,然后选择Find in Path.(或者使用快捷键Ctrl+Shift+F) ...

  3. linux 统计某个文件的行数

    今日思语:迷茫的时候,看看身边那些优秀的人,他们还在那么努力,或许你就可以有点方向和动力了 在linux系统中,我们经常会对文件做行数统计,可以使用如下命令 wc -l file #file为具体的文 ...

  4. 统计C/C++代码行数

    近日在写一个统计项目中C/C++文件(后缀名:C/CPP/CC/H/HPP文件)代码行数的小程序.给定包含C/C++代码的目录,统计目录里所有C/C++文件的总代码行数.有效代码行数.注释行数.空白行 ...

  5. shell 统计某个文件的行数命令

    语法:wc [选项] 文件- 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...

  6. 【SQL】统计所有表的行数

    环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...

  7. excel 宏循环行数据 ,Excel统计所有sheet数据行数 VBA

    Sub fun1() '统计每一个sheet有多少行数据 Set s1 = Sheets("Sheet1") 'totalok = 0 To Sheets.Count s1.Cel ...

  8. R统计数据框的行数

    如下三种方法可以实现 使用dim函数 dim(dataframe)[0] 使用nrow函数 nrow(dataframe) 使用length函数统计 length(dataframe[,1])

  9. 统计VS2013中有效行数

    将鼠标放在解决方案处,按下ctrl+shift+F b*[^:b#/]+.*$(带前面的using)^b*[^:b#/]+.*$

随机推荐

  1. Android第二天

    1.从看得见的活动入手 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

  2. [Q]打印机页边距设置

    问题描述:当您在使用CAD批量打图精灵默认设置打印图纸(使用pdfFactory虚拟打印机),可能会发现打印出的图纸页边距比您手工打印(使用Adobe或系统打印机)的要偏大. Adobe虚拟打印机打印 ...

  3. netty中级篇(2)

    上一篇 netty入门篇(1) 一.编码解码技术 如何评价一个编解码技术: 是否支持跨语言,或者说支持的语言是否丰富 编码码流大小,影响传输速度 编码和解码的性能,即时间 类库是否精致,API是否方便 ...

  4. CODE[VS]-最小数和最大数-整数处理-天梯青铜

    题目描述 Description 输入n个数,n<=100,找到其中最小的数和最大的数 输入描述 Input Description 第一行一个整数n 接下来一行n个整数,每个整数不超过231 ...

  5. aforge通过角点匹配图片相似度

    我不知道什么原因,人品不好还是啥的 ExhaustiveTemplateMatching这个类无法高精确度的匹配图片 ........... 换一种方式,就好得多 /// <summary> ...

  6. ACM沈化校赛

    答对两道题,因为比赛经验原因明明可以对四道,在这两道题又浪费过多时间,成绩不理想,但也是累积了一下经验.

  7. Java中IO流

    * IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流. * 流按操作类型分为两种: * 字节流 : ...

  8. git上传报错的解决方案

    刚创建的github版本库,在push代码时出错:$ git push -u origin masterTo git@github.com:******/Demo.git ! [rejected] m ...

  9. 【4】学习JS 数据结构与算法笔记

    第一章 JS 简介 1. 环境搭建的三种方式 1. 下载浏览器 2. 使用 Web 服务器 ( XAMPP ) 3. 使用 Node.js 搭建 Web 服务器 4. 代码地址>> 2. ...

  10. BestCoder 百度之星2016

    20160523 百度之星初赛第一场 1001 All X Problem Description F(x, m)F(x,m) 代表一个全是由数字xx组成的mm位数字.请计算,以下式子是否成立: F( ...