zoukankan      html  css  js  c++  java
  • 统计C语言程序行数


    补充前一篇中统计C语言程序行数的程序
    写得比较匆忙,可能有些失误,等弄明白GitHub的用法并完善程序后再补充完整代码链接
    没有写成函数,但经过简单修改可以作为一个计算或判断函数使用
    判断算法主要为以下几点

    • 如果是' '、' '、' '则直接跳过;
    • 如果是' '则判断该行是否有字符,没有跳过;
    • 对于'//'类的注释,判断注释符号前是否有效,无效则跳过;
    • 对于'/ * '类的注释,则寻找下一个' * /',如果中间遇到' ',则判断该行是否有效,例如有效代码与'/ * '在同一行时,该行应该计算在内。

    对于文件读写,暂时没有实现文件夹遍历,文件读写及所需头文件代码如下

    #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]=='
    ')||(s[i]=='	'))
    		{
    			i++;
    			continue;
    		} //第一类
    		if (s[i]=='
    ')
    		{
    			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]!='
    ')) i++;
    			i++;
    			continue;
    	    } // '//'类注释
    	    if ((s[i]=='/')&&(i<m-1))
            {
    			if (s[i+1]=='*')
    			{
    				i+=2;
    				while (i<m)
    				{
    					if (s[i]=='
    ')
    					{
    						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++; //最后一行有时没有'
    '
    
  • 相关阅读:
    Python 0001:生成激活码
    Python pillow
    python file and stream
    猴子选大王问题(Monkey King)
    python 杨辉三角
    python random
    window.showModalDialog的简单实践
    Java Web 编程
    Java基础和JDK5.0新特性
    Base64加密工具-iBlogs
  • 原文地址:https://www.cnblogs.com/S031602240/p/6290403.html
Copyright © 2011-2022 走看看