2009-12-15 7 views
5

quelqu'un peut-il me montrer comment obtenir le nombre total de lignes dans un fichier texte en langage de programmation C?Récupérer le nombre total de lignes dans un fichier

+0

performance est-elle un facteur? Quelle est la taille des fichiers susceptibles d'être? –

+1

votre question précédente ne l'a pas aidé? http://stackoverflow.com/questions/1910618/c-reading-a-text-file-into-array-line-by-line-and-print-them – lsalamon

+0

il contiendra 3 millions de lignes, chaque ligne se compose de trois les points flottants séparés par un espace, il s'agit du fichier réseau triangulaire irrégulier généré à partir du fichier LIDAR LAS. – asel

Répondre

20

C'est une approche:

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

Cette fonction donne de faux résultats, car la boucle est terminée sur 'ch! = EOF' et la valeur de' ch' est testée avec 'ch! = '\ N'' ce qui est toujours vrai, car à ce stade' ch 'est égal à' EOF'. La fonction renvoie incorrectement une ligne de plus si le fichier se termine par un caractère '\ n'. Si le fichier est vide ou s'il ne se termine pas par \ n, la fonction renvoie le nombre attendu de lignes. Une solution correcte vérifie le dernier caractère avant le 'EOF'. –

-5

A "non par un chef de projet" solution

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

Ceci est une réponse vraiment improductive. En outre, vous êtes en train de creuser une question de 2009 –

+1

Cette réponse suppose l'utilisation d'un système d'exploitation spécifique. – Eran

Questions connexes