当前位置:  编程技术>c/c++/嵌入式

C语言实现的统计php代码行数功能源码(支持文件夹、多目录)

    来源: 互联网  发布时间:2014-10-26

    本文导语:  放假在家没事,睡过懒觉,看过电影,就想起来写个小程序。 统计php代码的行数,对于phper还是挺实用的。支持单个文件和目录。下面是代码和演示的例子! /**  * @date     2012-12-1  * @author bright  * @todo     统计php代码...

放假在家没事,睡过懒觉,看过电影,就想起来写个小程序。 统计php代码的行数,对于phper还是挺实用的。支持单个文件和目录。下面是代码和演示的例子!

/**
 * @date     2012-12-1
 * @author bright
 * @todo     统计php代码行数
 */

#include 
#include 
#include 
#include 
#include   
#include 
#include 
#define LINESIZE 300

int fn(const char *file,const struct stat *sb,int flag);
int check_file_type(const char * file_name);
void read_file(const char *file);
int is_file();
void print_error();

int error_id=0;
char *path;
const char *FTYPE=".php";
const char *flags[]={"";
int line_sum=0;
int file_sum=0;
int show_one_file_line=0; //是否显示每个文件的行数

int main(int argc, char *argv[])
{
    if(argc==1){
        printf("请在命令后面添加目录或文件名!n");
        return 0;
    }
    if(argc==3 && strcmp(argv[2],"-p")==0){
        show_one_file_line=1;
    }
        
    path=argv[1];
    
    if(is_file(path)){
        if(check_file_type(path)){
            read_file(path);
        }
    }
    else{
        ftw(path,fn,1000);
    }
    
    if(error_id=0;i--){
                if (strstr(arr,flags[i])!=0){
                    full_code=1;
                    break;
                }
            }
        }
    }

    line_sum+=line_num;
    file_sum++;
    if(show_one_file_line)
        printf("%st Lines:%dtn",file_path,line_num);
}

int fn(const char *file,const struct stat *sb,int flag)
{
    if(flag==FTW_F){
        if(is_file()==0){
            if(check_file_type(file)){
                read_file(file);
            }
        }
    }
    
    return 0;
}


//return 0: 文件; 1:目录
int is_file()
{
    int i=strlen(path);
    for (;i>=0;i--){
        if (path[i]=='.'){//文件
            if (access(path,F_OK)!=0){
                error_id=1;
            }
            else if (access(path,R_OK)!=0){
                error_id=2;
            }
        
            return 1;
        }
        else if (path[i]=='/'){//目录
            if (access(path,F_OK)!=0){
                error_id=3;
            }
            return 0;
        }
    }
    return 0;
}

//文件是否为指定格式
int check_file_type(const char * file_name)
{
    char *tmp=rindex(file_name,'.');
    if(tmp==NULL){
        return 0;
    }
    if(strcmp(tmp,FTYPE)!=0){
        error_id=4;
        return 0;
    }
    return 1;
}

//打印错误信息
void print_error()
{
    switch(error_id){
    case 1:
        printf("该文件不存在!请检查!n");
    break;
    case 2:
        printf("您没有对该文件的读权限!请检查!n");
    break;
    case 3:
        printf("该目录不存在!请检查!n");
    break;
    case 4:
        printf("文件格式格式错误,不是%s格式,请重试!n",FTYPE);
    break;
    }
}

演示例子:


    
 
 

您可能感兴趣的文章:

  • 请问ubuntu自动更新的语言包放到那个文件夹下
  • linux下C语言如何实现获得文件夹的大小?
  • 如何用C语言在./目录下新建一个文件夹?
  • c 语言怎样获取一个文件夹下的所有文件名和文件?
  • 哪位兄弟有SCO的telnetd的c语言源码,或是有下载的地址?谢谢!
  • 谁有<unix环境高级语言>这本书的源码?
  • 纯C语言:分治假币问题源码分享
  • 纯C语言:递归二进制转十进制源码分享
  • C语言实现的ls命令源码分享
  • 纯C语言:折半查找源码分享
  • 用source insigt 看Linux0.11内核完全注释中的内核源码时,发现了一个有关c语言语法的奇怪现象。大虾请进,帮小弟解解惑。有重谢!
  • 纯C语言:贪心Prim算法生成树问题源码分享
  • 纯C语言:分治快速排序源码分享
  • C语言借助EasyX实现的生命游戏源码
  • 纯C语言:检索与周游广度深度遍历源码分享
  • C语言读取BMP图像数据的源码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux c语言 如何统计utf-8编码的包含中英文和各种符号的字符串中各个字符的个数
  • C语言实现的统计素数并求和代码分享
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 动态编程语言 LIME编程语言
  • c语言实现MD5算法完整代码示例
  • C语言如何改变当前语言环境
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • c语言基于libpcap实现一个抓包程序过程
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML超文本标记语言教程及实例
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • MD5算法的C语言实现
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3