como hacer un contador de lineas de codigo en C

Iniciado por Syscrew, 2 Junio 2011, 05:48 AM

0 Miembros y 1 Visitante están viendo este tema.

Syscrew

hola, quieor que me guien en como hacer un contador de lineas de codigo, la verdad si ando bien perdido en eso, no tengo ni la menor idea de como hacerlo, los requerimientos son de que desde un archivo, lo lea y cuente cuantas lineas de codigo tiene, y si se peude, leerse a si mismo y contarse, o leer el .exe que genera el .c

la cosa es que, como hago para leer un archivo y despues que me cuente las lineas, e ignorar los comentarios, como haria ese filtro para que cuando se tope con /* no lo tome en cuenta.

si es para un trabajo escolar, no pido que me hagan el codigo si no que me ayuden a entender como hacerlo ya que hacerle el copy paste pues no aprenderia nada.

espero su ayuda, ya que ando en fase de aprender en serio el mundo de la programacion, y pues empeizo con c por que es lo que me enseñaron en la escuela

gracias

HeXmiT

Para el tema de los archivos, dale un ojo a esto:
http://c.conclase.net/librerias/?ansifun=fopen

Para el resto del problema, yo lo haria con expresiones regulares.

Necesitas ignorar las lineas que comienzan por // sin necesidad de cierre.
Ignorar las lineas /* hasta encontrar */.

El resto es ir leyendo linea a linea (hasta "endl", \n o como quieras ponerlo..) e ir volcando a otro archivo resultado.

Syscrew

#2
Citarbueno ya saque el programa que me cuente las lineas de codigo, ahora nesesito sacar algo mas, en C como se identifica un metodo de otro, o clase, auqnue las clases son en orientado a objeto pero no hago eso cual es el equivalente de las clases en C que no sea por orientado a objetos?

ya que lo que nesesito es, identificar cuantas clases tengo y cuantas lineas de codigo hay por dicha clases o metodos

actualizacion bueno ya leeo lineas de codigo, ya lo separe por metodos o funciones ahora me falta un filto para que en metodo 1 me lea cantas lineas de codigo hay luego en metodos cuantas lineas tengo y asi susesivamente, y al final contar el total de lineas.

aqui les dejo lo que llevo


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{0
header();
clc();

system("PAUSE");
return 0;
}
header()
{
printf("\t\t/*************************************************/\n");   
printf("\t\t/*Program Assignment: #2 */\n");
printf("\t\t/*Name:                                                                       */\n");
printf("\t\t/*2 de junio del 2011 */\n");
printf("\t\t/*Cuenta cuantas lineas de codigo hay e cada                 */\n");
printf("\t\t/*funcion */\n");
printf("\t\t/*************************************************/\n");
}
clc()
{
int contador = 0;
FILE *archivo;
char caracteres[200];
archivo = fopen("contadro de lineas de codigo.c", "r");
while(feof(archivo) == 0)
{
fgets(caracteres,200,archivo);
printf("%s", caracteres);
if(caracteres[0] != '/' && caracteres[1] != '*')
contador++;
if (isspace (caracteres[0]))
contador--;

}
printf("\n Fueron tantas lineas de codigo %d\n", contador);
}
como ven lo estructure, quiero hacer el filtro que cuando lea por ejemplo

el primer metodo o funcion es header(); y yo lo reenombro mtdheader() y despues el otro igual mtdclc() y hago una condicion if que diga que si empeiza con mtd me lo tome como metodo y me cuente las lineas de esa sección luego imprima mtdheader tiene tantas lineas de codigo y despues lo mismo con el mtdclc imprima tiene tantas lineas de codigo y asi susesivamente y al final lineas totles es tanto.

ando en pleno diseño d hacer esa sección

Syscrew

hola, la verdad, ando dando vueltas con el tema, me que ahi, y no puedo buscar el algoritmo, como mencione quiero que cuando me detecte

main()
{
mtdheader();
mtdclc();
}

como hacer para que, cuando se lea el archivo, cuente mtdheader() lo detecta como mi primer metodo ya que lo detecto brinque a

header()
{
printf("\t\t/*************************************************/\n");   
printf("\t\t/*Program Assignment: #2 */\n");
printf("\t\t/*Name:                                                                       */\n");
printf("\t\t/*2 de junio del 2011 */\n");
printf("\t\t/*Cuenta cuantas lineas de codigo hay e cada                 */\n");
printf("\t\t/*funcion */\n");
printf("\t\t/*************************************************/\n");

y cuente las lineas de codigo que hay, despues, detecte el segundo metodo que seria mtdclc() y brinque a

clc()
{
int contador = 0;
FILE *archivo;
char caracteres[200];
archivo = fopen("contadro de lineas de codigo.c", "r");
while(feof(archivo) == 0)
{
fgets(caracteres,200,archivo);
printf("%s", caracteres);
if(caracteres[0] != '/' && caracteres[1] != '*')
contador++;
if (isspace (caracteres[0]))
contador--;

}
printf("\n Fueron tantas lineas de codigo %d\n", contador);
}

pero que al final me imprima

metodo mtdheader() tiene 9 lineas de codigo
metodo mtdclc() tiene 16 lineas de codigo
lineas totales son 37

lo que me falta es eso que me imprima nombre del emtodo y cuantas lineas tiene