C Program to Count Lines of Code

dvanaria picture dvanaria · Mar 11, 2011 · Viewed 14.2k times · Source

I'm writing a simple LOC counter in C to count how many lines of code are in my C source files. It's meant to be run from the command line, redirecting the target file as input and seeing a total line count printed to standard out. For example:

  counter.exe < counter.c
  15

So far the only rules I'm using are:

  1. Only count lines that have more than 3 characters (no blank lines or lines that only have a closing brace and semi-colon, etc).

  2. Don't count spaces as characters.

Here's my program:

#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;
}

My question is, can you offer some improvements to the rules to make this a more valid measure? Do people often count comments as valid lines of code? How about spaces or blank lines?

I don't want to start a debate over the validity of LOC counts in general, it's something I've been asked in several interviews and I think is worth knowing, in a general sense, how many lines of code my own projects are. Thanks!

Answer

kvista picture kvista · Mar 11, 2011

Generally, people do:

  • Count comments as LOC
  • Count blank lines as LOC

However, people also assume/practice:

  • Comments included are necessary/useful (not gratituitous)
  • Blank lines are not excessive, and exist to provide clarity

Code line counters, as a result, generally take into account all line breaks in their computation.