统计代码的行数 c实现
来源:互联网 发布:国家顶级域名us 编辑:程序博客网 时间:2024/05/20 10:55
做一个小项目快一个月了,今天和同学聊着聊着,同学问我写了多少行代码?
是啊,我写了多少行代码呢?
同学建议我随便在网上找一个shell脚本代码就能知道有多少行代码,为什么不用万能的
C语言去实现呢?
于是有了此文,思路很简单,大致是传入一个文件路径或者是文件名,然后我写了一个遍历函数去寻找
.c和.h文件,并得到相应的行数。
代码如下:
int read_dir(char* filename, int mode, int* pline_num){int ret = 0;char file[256] = {0};char file_path[256] = {0};DIR* dir = opendir(filename);char end_file[64] = {0};int n_name = 0;if(!dir){ printf ("open dir failure\n");ret = -1;return ret;}struct dirent* ent = NULL;while( ent = readdir(dir)){if(ent->d_type == DT_DIR){if(mode == 1){continue;}if(!memcmp(ent->d_name, ".", 1)||!memcmp(ent->d_name,"..",2)){continue;}sprintf(file_path, "%s/%s", filename, ent->d_name);read_dir(file_path, mode, pline_num);memset(file_path, 0, sizeof(file_path));continue;}else{n_name = get_dot_name(ent->d_name, end_file);if( n_name == 1 && \(!memcmp(end_file, "c", 1) || !memcmp(end_file,"h",1))){sprintf (file, "%s/%s", filename, ent->d_name);*pline_num += get_line(file);}memset(end_file, 0, sizeof(end_file));memset(file, 0, sizeof(file));}}return ret;}
mode 为希望程序查找的模式,若mode为1则只查找当前目录下的文件,否则查找目录下的文件和文件夹
int get_line(char* filename){FILE* fp = NULL;int line_num = 0;fp = fopen(filename, "r+");char c = 0;if(fp){while( (c = fgetc(fp)) != EOF){if(c == '\n'){++line_num;}}++line_num;}fclose(fp);fp = NULL;return line_num;}int get_dot_name(char* filename, char* dot_name){int n_name = 0;char c = 0;while( (c=*filename++) != '.'){if(c == '\0'){return n_name;}}while((*dot_name++ = *filename++) != '\0'){++n_name;}return n_name;
}
以上只是获取文件行数简单功能的实现。如有更好的方法,望多多交流。
0 0
- 统计代码的行数 c实现
- C语言代码行数统计bash实现
- python 统计代码行数,注释行数的简单实现
- 统计代码的行数
- Objective-C代码行数统计
- shell统计C代码行数
- 代码行数统计算法实现
- java实现统计代码行数
- 多线程实现代码行数统计
- shell实现代码行数统计
- python实现的代码行数统计(纯代码)
- 一个统计代码行数的程序C语言
- 用C语言统计php代码的行数
- 统计代码行数的脚本
- Java代码行数的统计
- 统计java代码的行数
- 统计C#项目有效代码行数的实现过程
- 代码行数统计的Java和Python实现
- sql注入原理及防范
- 第七章 查找技术
- 在Ubuntu 上使用git
- hadoop运行WordCount程序
- 重载RibbonButton,可以动态更改图标。
- 统计代码的行数 c实现
- 利用对象的Class辅助实现对多态容器中元素的查找
- 黑马程序员——多线程
- 暑期大作战第四天
- searchcode 代码搜索引擎及使用
- 设计模式之MVC模式
- 实现RTP协议的H.264视频传输系统
- 广搜 象棋格
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)