下载此文档

C语言代码统计器.docx


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
摘 要
本课题的主要任务是开发一款代码行数统计器,专门用于统计C语言或C++语言程序代码文件。该统计器的主要功能是统计代码文件的文件行数、有效代码行数、注释行数、空白行数,以及计算代码的注释率。和那些只能统计单个文件的统计器不同,这款统内部指针,所以必须采取特殊措施才能实现连续读取。该程序是将文件打开两次,两个指针一前一后交替读取字符,从而达到连续读取的目的。
int fclose(void) :关闭所有已打开的文件。文件打开之后一定要关闭,否则将会使数据丢失。
遍历文件夹
在头文件< >中,定义了一个结构体:
struct _finddata_t {
unsigned attrib;
time_t time_create;
time_t time_access;
time_t time_write;
_fsize_t size;
char name[260];
};
并且定义函数 long __cdecl _findfirst(const char *, struct _finddata_t *),利用该函数,能够对一个文件夹路径进行检索,返回所给文件夹路径的子文件或子文件夹指针。从而,我们就可以从这个返回的结构体指针中获取文件夹子目录的全部相关信息,例如:文件或文件夹名、文件类型、文件大小以及更改日期等
得知这些信息之后,我们只需要对不同类型的文件分别进行处理,就能实现对整个目录的遍历。
这个程序是采用递归算法,如果所给文件夹的子目录是文件,则直接统计;如果所给文件夹的子目录是文件夹,则将对子文件夹的路径继续调用该函数,直至没有子文件夹为止。
变量处理
由于要统计代码源文件中的文件行数、代码函数、注释行数、空白行数等信息,则需要使用多个变量来分别统计各种信息。并且,有些变量不只在一个函数中使用,有些变量在递归时不能改变它的值。为此,在该统计器的程序设计中,一共使用了五个全局变量、九个静态变量。
其中,五个全局变量分别统计用户输入的文件夹中的文件总数、总代码行数、总有效代码行数、总注释行数、总空白行数;九个静态变量位于字符判断的模块,分别用来统计单个文件的代码行数、有效代码行数、注释行数、注释率,以及用来标记字符是否在注释中、是否在字符串中、该行是否有注释、是否有代码等。
这样做减少了函数之间值的地址的传递,出错也就更少,安全性也就越高。
错误识别与防范
内存错误
C语言中,指针一直都是最容易出错的地方。为了防止指针出错,本程序在关键处使用了C标准库函数中,<>头文件下void assert(int exp) 这个函数,它是用于表达式结果的正确性测试并且当表达式结果为假时使程序终止。
本程序总共在三个地方使用到了它:
在接受用户所输入的文件(夹)路径,将该路径传递给一个数组时,用于判断数组下标是否越界。
在递归遍历文件夹时,函数入口参数是一个指针变量,接受文件夹路径。此处是用它来防止指针为空的情况。
在判断文件是否为C或C++代码文件时,和第二种情况差不多,也是用来防止接收的文件名指针为空。
用户输入有误
为了让用户更好地使用软件,就需要有很好的人机对话,当用户输入错误信息的时候,就应该有所提示。这款软件能识别用户所输入的参数是否为文件(夹)路径,并且会给出相应的语言提示。并且,当用户所输入的文件或文件夹路径不存在时,也会给出相应的提示或警告,从而不会出现统计对象出错等现象。
概要设计
路径判断
为了高效统计用户所需的代码文件,就要求统计器能够批量统计文件夹。因此,首要任务就是要识别用户输入的信息,看用户所给的路径名是文件还是文件夹,从而做出相应的处理,该部分流程图如下:
判断完用户所输路径后,就需要对其分开处理。因为该代码统计器是专门用来统计C语言或C++语言的,所以当接收路径名为文件时,就需要判断该文件的种类,如果是C或C++程序代码文件,则直接进行统计;否则报错,提示用户文件格式不正确。该部分流程图如下:
遍历文件
因为要实现批量处理文件,所以如果用户输入的是文件夹路径,就需要对该文件中的所有文件进行遍历,包括子文件夹中的所有文件,再分别统计出各个文件的相关信息。文件遍历是一个很关键的部分,遍历是否完全关系到统计的精确度,该统计器采用的是递归遍历法,其流程如下:
字符判断
如果说文件遍历很重要,那么对文件字符的判断则是整个程序的核心部分。因为这部分直接关系到单个文件的统计是否正确。由于代码中存在许多关键字符

C语言代码统计器 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小1.30 MB
  • 时间2022-02-22