行数を数えるプログラム

ちょっとソースコードの行数を数えるプログラムが欲しかったので、適当に作りました。Windowsじゃ使い物にならないかもしれません。

引数に与えたファイルの行数と、それらを合計した行数を表示します。

int countLine( const char *filename );

int main( int argc, char *argv[] )
{
	int i;
	int count;
	int total = 0;

	for ( i = 1; i < argc; i++ ) {
		count = countLine( argv[i] );
		if ( count >0 ) {
			printf( "%s...%dn", argv[i],  count);
			total += count;
		}
	}

	printf( "total...%dn", total );
	return 0;
}

int countLine( const char *filename )
{
	int c;
	int count = 1;
	FILE *fs = fopen( filename, "r" );
	if ( fs == NULL ) return 0;

	while ( (c = fgetc( fs )) != EOF ) {
		if ( c == 'n' ) count++;
	}

	fclose( fs );
	return count;
}

使用例:

overtaker-no-ibook-g4:desktop lifeaether$ ./line.out gameengine/*.cpp
gameengine/GEAnimation.cpp...135
gameengine/GEAnimationView.cpp...69
gameengine/GECore.cpp...123
gameengine/GEFontResource.cpp...48
gameengine/GEFps.cpp...51
gameengine/GEGridView.cpp...177
gameengine/GEImageChipView.cpp...105
gameengine/GEImageResource.cpp...82
gameengine/GEImageView.cpp...77
gameengine/GELineMoveAnimation.cpp...71
gameengine/GEMisc.cpp...109
gameengine/GERectView.cpp...27
gameengine/GEResource.cpp...55
gameengine/GEResourceLoader.cpp...76
gameengine/GERichRectView.cpp...66
gameengine/GETextView.cpp...129
gameengine/GEToLua.cpp...45
gameengine/GEToLuaGlueCode.cpp...2021
gameengine/GEView.cpp...245
gameengine/GEWindow.cpp...109
gameengine/main.cpp...60
total...3880

客観的なデータとして、ソースコードの行数というのは、プログラムについて詳しく知らない方に向けて話す時に、役立ちそうな気がします。

コメント投稿