用C语言做一个对C源程序进行行数统计的程序!急~~~

citytiti 2004-08-30 09:23:01
对C源程序文件进行行数统计的程序,要求输出一个指定目录下的所有.C及.H文件的大小,总行数,代码行数及注释行数.

要求用C语言编写。。。
...全文
354 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
citytiti 2004-09-04
  • 打赏
  • 举报
回复
谢谢大家啊!太感谢了!
lion1900 2004-08-31
  • 打赏
  • 举报
回复
/************************************************
* -name [IN]源文件名 *
* -code [OUT]代码行数 *
* -comment [OUT]注释行数 *
* 返回总行数。出错返回0 *
*************************************************/
int sum_line(char *name, int *code, int *comment)
{
FILE *fp;
char buff[BUFF_MAX];
int flag;


if((fp = fopen(name, "rt")) == NULL)
return 0;

(*code) = 0;
(*comment) = 0;
flag = 0;
empty = 0;
while(!feof(fp))
{
fgets(buff, BUFF_MAX, fp);

if(strstr(buff,"\n") == buff)
continue;

if(flag == 1)
{
if(strstr(buff, "*/") != NULL)
flag = 0;
(*comment)++;
continue;
}

if(strncmp(buff, "//", 2) == 0)
(*comment)++;
else if(strncmp(buff, "/*", 2) == 0)
{
if(strstr(buff, "*/") != NULL)
(*comment)++;
else
flag = 1;
}
else
(*code)++;
}
fclose(fp);

return (*code) + (*comment);
}
pacman2000 2004-08-31
  • 打赏
  • 举报
回复
int i; // 注释。。。
这算是一行? 一个代码行? 一个注释行? 还是一个代码行加一个注释行?
楼主的需求描述不清楚啊。
lion1900 2004-08-31
  • 打赏
  • 举报
回复
mark
短歌如风 2004-08-31
  • 打赏
  • 举报
回复
一般来说,C代码中的有效代码行数与分号的个数是大致接近的,没有必要为了精确统计做得那么复杂。如果一定要精确统计,就要完成一个C代码语法分析器了。
zwzzj 2004-08-31
  • 打赏
  • 举报
回复
#include <stdio.h>

void main(int argc,char **argv){

FILE *fs,*fd;
int ln=1;
char buf[512];

if(argv!=3){
printf("parament error!\n");
printf("\nformat:filename source_file destion_file\n");
getch();
exit(0);
}

if((fs=fopen(argv[1],"rt"))==NULL){
printf("Cannot oprn this file %s\n",argv[1]);
exit(0);
}

if((fd=fopen(argv[2],"wt"))==NULL){
printf("Cannot oprn this file %s\n",argv[2]);
exit(0);
}

while(fgets(buf,512,fs)!=NULL)
if(fprintf(fd,"%d%-6s",ln++,buf)==NULL){
printf("Cannot write to %s.\n",argv[2]);
fclose(fd);
exit(0);
}

fclose(fs);
printf("OK!\n");
}
ywfscu 2004-08-30
  • 打赏
  • 举报
回复
一行一行的读直到feof()
健之 2004-08-30
  • 打赏
  • 举报
回复
逐个打开每个文件,读出相应的行数等,并作出判断。
Squall1009 2004-08-30
  • 打赏
  • 举报
回复
?
linguanyu315 2004-08-30
  • 打赏
  • 举报
回复
同意楼上的.
Wugifer 2004-08-30
  • 打赏
  • 举报
回复
用 fgets 吧,一次一行。
zwzzj 2004-08-30
  • 打赏
  • 举报
回复
读出文件中的512字节到缓冲区,再调用fprintf()函数就可以了。代码明天给你传过来。
citytiti 2004-08-30
  • 打赏
  • 举报
回复
请高人指点迷津!最好能给我个程序!
李宠波 2004-08-30
  • 打赏
  • 举报
回复
怎么算是一行?如果一个回车就是一行,或者一个分号就算是一代码行,那就容易了。
代码行统计工具使用说明 代码行统计工具用Java语言实现,可以对C\C++、Java的源代码进行统计统计结果包括:总行数、空行数、注释行数和代码行数统计结果可以以表格的形式显示给用户或另存为文件。 一 执行环境: 操作系统:WindowsNT/2000; 执行环境:JDK1.3。 二 安装: 1)将code.zip解压缩; 3)设置环境变量: 在 开始—〉设置—〉控制面板—〉系统—〉高级—〉环境变量 中设置环境变量: PATH=[code.zip的安装目录]\jre\bin CLASSPATH=[code.zip的安装目录]\class 三 运行: 直接运行(双击)在程序[code.zip的安装目录]\class目录下的CodeStatistic.bat 批处理文件。 〈注〉:如果程序不能正常运行,有可能是前面系统环境变量PATH、CLASSPATH设置的问题,请检查添加的路径是否正确,确定正确还不能正常运行,请注销当前用户后再启动程序。 四 使用方法: 1. 代码行统计工具开始工作后,点击窗口下方的“添加”按钮会以对话框的形式浏览硬盘目录,现在可以添加要进行统计的C\C++、Java程序, 2. 选定文件后,会在代码行统计工具主界面的列表框中显示已选定的文件名和路径; 3. 点击“添加”按钮继续添加需统计的文件或点击“删除”按钮删除已选文件; 4. 需统计的文件选定后,点击“统计”按钮开始统计,弹出“代码行统计结果”窗口以表格形式显示统计结果; 5. 在“代码行统计结果” 窗口中可选择将统计结果另存为文件形式; 6. 点击“关闭”按钮关闭“代码行统计结果” 窗口,回到主窗口; 7. 继续其它统计活动或点击“退出”按钮退出代码行统计工具。

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧