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

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

要求用C语言编写。。。
...全文
367 14 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
怎么算是一行?如果一个回车就是一行,或者一个分号就算是一代码行,那就容易了。

70,037

社区成员

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

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