2009-12-15 18 views
5

¿alguien me puede mostrar cómo obtener el número total de líneas en un archivo de texto en el lenguaje de programación C?Recuperar el número total de líneas en un archivo

+0

es el rendimiento es un factor? ¿Qué tan grandes son los archivos? –

+1

su pregunta anterior no lo ayudó? http://stackoverflow.com/questions/1910618/c-reading-a-text-file-into-array-line-by-line-and-print-them – lsalamon

+0

contendrá 3 millones de líneas, cada línea consta de tres puntos flotantes separados por espacio, es un archivo de red irregular triangular generado a partir del archivo LIDAR LAS. – asel

Respuesta

20

Este es uno de los enfoques:

FILE* myfile = fopen("test.txt", "r"); 
int ch, number_of_lines = 0; 

do 
{ 
    ch = fgetc(myfile); 
    if(ch == '\n') 
     number_of_lines++; 
} while (ch != EOF); 

// last line doesn't end with a new line! 
// but there has to be a line at least before the last line 
if(ch != '\n' && number_of_lines != 0) 
    number_of_lines++; 

fclose(myfile); 

printf("number of lines in test.txt = %d", number_of_lines); 
+2

Esta función da resultados falsos, porque el ciclo se sale en 'ch! = EOF' y luego el valor de' ch' se prueba con 'ch! = '\ N'' que siempre es verdadero, ya que en este punto' ch 'es igual a' EOF'. La función devuelve incorrectamente una línea más si el archivo termina con un carácter '\ n'. Si el archivo está vacío o si no termina con '\ n', la función devuelve el número esperado de líneas. Una solución correcta verificaría el último carácter antes del 'EOF'. –

-5

A "no por un jefe de proyecto" solución

system("wc profile.dat > no.lines"); 
FILE *pfile = fopen("no.lines", "r"); 
int lines; 
fscanf(pfile, "%d", &lines); 
system("rm no.lines"); 
+1

Esta es una respuesta realmente improductiva. Además, está desenterrando una pregunta de 2009 –

+1

Esta respuesta supone el uso de un sistema operativo específico. – Eran

Cuestiones relacionadas