回 帖 发 新 帖 刷新版面

主题:[原创]紧急求助啊,程序风格分析

读入一个C程序,统计程序中代码,注释,空行的行数以及函数的个数和平均行数,并利用统计信息分析该程序的风格.要求如下:
        (1) 把C程序文件按字符顺序读入源程序;
        (2) 边读入程序,边识别统计代码行,注释行和空行,同时还要识别函数的开始和结束,以便统计其个数和平均行数;
         (3) 程序的风格评价分为代码,注释,空行三个方面.
     急啊!!!!!!!!!!!!
     谢谢大哥大姐们啊!!!!!!!!!!!!!!

回复列表 (共10个回复)

沙发

有趣 mark

板凳

是吗?能帮小弟做做吗?读文件不会啊,好象不会编,
我将程序按行存入二维数组,但运行后值总是0啊
郁闷啊!!!!!!!!
谢谢啊,副版!!!!!

3 楼

你把所有的都放到内存了?不是吧...

4 楼

char x[300][150],filename[20];
int maxline=0;/*最大行数*/
int ReadDat()
{FILE *fp;
 int i=0;
 char *p;
 if((fp=fopen(filename,"r"))==NULL)
 {printf("Can not Open the File!\n");exit(0);}
 while(fgets(x[i],150,fp)!=NULL)
     {p=strchr(x[i],'/n');
      if(p)  *p=0;
      i++;
     }
 maxline=i;
 fclose(fp);
 return 1;
 )printf("%d",maxline);
}

main()
{printf("Input the Filename:");
 scanf("%c",filename);
 ReadDat();
}
就只是读一下文件都不可以,没办法,文件实在学的不怎么样,简单的都不会,
再者strchr(x[i],'/n'),这个行结束符号也有问题啊,
哎!!!!!!!!!!!!

5 楼

有没有会写的帮我写一个程序出来啊,小弟我实在是没办法啊,都想要放弃了,
各位大哥大姐们,一边看一边给个回话啊,谢谢了啊!!!!!!!!!!!!!
好人们都出来啊,小弟都快急死了,没个头绪啊

6 楼

统计文件行数:

#include <stdio.h>
int ParseFile(char* filename);
void main()
{
    printf("Input the file name:");
    char filename[FILENAME_MAX];
    scanf("%s", filename);
    ParseFile(filename);
}

// 解析文件的函数
int ParseFile(char* filename)
{
    if (NULL == filename)
    {
        printf("Null File Name!");
        return 0;
    }
    char buf[1024];
    int lineNum = 1;
    FILE* pf = fopen(filename, "rb");
    if (NULL == pf)
    {
        printf("Open File Failed!");
        return 0;
    }
    int nRead, i;
    while (!feof(pf))
    {
        // nRead 为实际读到缓存区中的字节数
        nRead = fread(buf, 1, sizeof(buf), pf);
        for (i = 0; i < nRead; i++)
        {
            if (buf[i] == '\n')
                lineNum++;
        }
    }
    printf("Total Line Num = %d\n", lineNum);
    fclose(pf);
    return 1;
}

7 楼

给了个程序,谢了啊,不过好象有些小问题啊,比如filename[FILENAME_MAX]
还有啊,就是不管我输入自己边的程序还是系统的程序,结果都是Open File Failed!

8 楼

把要分析的文件和exe文件放同一目录下,命令行下到该目录运行。

9 楼

统计函数个数和平均行数,函数起始位置如何记录啊?
如果用特殊符号定位函数的话,程序的可用性就很小啊,我想用{}配对来做,
但是每个函数的第一个{的位置不知道怎么记录, 还有就是这样会把定义的
那些结构体也算进来了,怎么办啊????????????
   各位达人们啊,给个提示或是程序什么的,感激不尽啊!!!!!!!!

10 楼

#include<stdio.h>
#include<string.h>
char x[300][150],filename[20];
int maxline=0;/*最大行数*/
void ReadDat()
{FILE *fp;
 int i=0,j;
 char *p;
 if((fp=fopen(filename,"r"))==NULL)
     printf("Can not Open the File!\n");
 while(fgets(x[i],150,fp)!=NULL)
     i++;
 maxline=i;
 fclose(fp);
 printf("%d",maxline);
 for(i=0;i<maxline;i++)
 for(j=0;j<strlen(x[i]);j++)
   printf("%c",x[i][j]);
}
main()
{printf("Input the Filename:");
 scanf("%c",filename);
 ReadDat();
}
读程序并统计程序的总行数没有问题啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册