2009-12-15 12 views
5

qualcuno può mostrarmi come ottenere il numero totale di righe in un file di testo nel linguaggio di programmazione C?Recupero di numeri di linea totali in un file

+0

è la prestazione di un fattore? Quanto saranno grandi i file? –

+1

la tua domanda precedente non lo ha aiutato? http://stackoverflow.com/questions/1910618/c-reading-a-text-file-into-array-line-by-line-and-print-them – lsalamon

+0

conterrà 3 milioni di righe, ogni riga è composta da tre punti flottanti separati da spazio, è il file di rete triangolare irregolare generato dal file LIDAR LAS. – asel

risposta

20

Questo è uno approccio:

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

Questa funzione dà risultati falsi, perché il ciclo viene chiuso su 'ch! = EOF' e quindi il valore di' ch' viene testato con 'ch! = '\ N'' che è sempre vero, poiché a questo punto' ch 'è uguale a' EOF'. La funzione restituisce in modo errato una riga in più se il file termina con un carattere '\ n'. Se il file è vuoto o se non finisce con '\ n' la funzione restituisce il numero di linee previsto. Una soluzione corretta controllerebbe l'ultimo carattere prima di 'EOF'. –

-5

A "non da un responsabile di progetto" soluzione

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

Questa è una risposta davvero improduttiva. Inoltre, stai recuperando una domanda dal 2009 –

+1

Questa risposta presuppone l'utilizzo di un sistema operativo specifico. – Eran

Problemi correlati