C程序计算代码行

dva*_*ria 1 c counter line loc

我在C中编写一个简单的LOC计数器来计算我的C源文件中有多少行代码.它意味着从命令行运行,将目标文件重定向为输入,并查看打印到标准输出的总行数.例如:

  counter.exe < counter.c
  15
Run Code Online (Sandbox Code Playgroud)

到目前为止,我使用的唯一规则是:

  1. 仅计算超过3个字符的行(没有空白行或仅具有右括号和分号的行等).

  2. 不要将空格计为字符.

这是我的计划:

#include <stdio.h>

int main() {

    int input;
    int linecount = 0;
    int charcount = 0;

    while ((input = getchar()) != EOF) {

        if (input == ' ') {
        }
        else if (input == '\n') {
            if (charcount > 3) {
               linecount++;
            }
            charcount = 0;
        }
        else {
            charcount++;
        }
    }

    printf("%d\n", linecount);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,您是否可以对规则进行一些改进,使其成为更有效的措施?人们经常将评论视为有效的代码行吗?空格或空行怎么样?

我不想一般就LOC计数的有效性开始辩论,这是我在几次访谈中被问过的事情,我认为值得一提的是,我自己的项目有多少行代码.谢谢!

kvi*_*sta 7

一般来说,人们会:

  • 将评论计为LOC
  • 将空白行计为LOC

然而,人们也承担/实践:

  • 包含的评论是必要/有用的(不是gratituitous)
  • 空白行不过量,并且存在以提供清晰度

因此,代码行计数器通常会考虑其计算中的所有换行符.


小智 6

不要写程序.使用wc --lines

  • 结合`grep -v`的变体,可以根据需要跳过空白行,短行和注释. (2认同)