Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
620 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] nombre de lignes dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] nombre de lignes dans un fichier

n°133195
electricbl​ue
Pas très inspiré...
Posté le 01-05-2002 à 23:13:37  profilanswer
 

Existe-t-il une fonction ou astuce permettant de recuperer le nombre de lignes dans un fichier?? Je sais qu'on pouvait le faire sous linux grace a un "grep", ms la chuis sous windows... J'entends par ligne une chaine de caractere se terminant par '\n'. Ou je dois coder la fonction.
Plus generalement existe-t-il une fonction qui permet de compter le nombre d'occurence d'un caractere ou d'une string dans un fichier.
Merci d'avance!

mood
Publicité
Posté le 01-05-2002 à 23:13:37  profilanswer
 

n°133220
gilou
Modérateur
Modzilla
Posté le 02-05-2002 à 03:07:06  profilanswer
 

Euh, pour compter les lignes d'un ou plusieur fichiers, sous unix, rien ne vaut wc.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°133224
HelloWorld
Salut tout le monde!
Posté le 02-05-2002 à 08:17:34  profilanswer
 

Salut,
si tu manipules des fichiers textes, tu peux utiliser fgets, qui lit une ligne. T'as pas a t'occuper des '\n' ou autre, fgets le fait pour toi.
Dans une boucle "tant que pas fin de fichier", tu fais des fgets et incremente un compteur de lignes ...
Ca peut cependant etre un peu penible a coder, etant donne qu'il faut tenir compte du cas ou la ligne a lire ne rentre pas dans le buffer passe a fgets ... si tu ne connais pas la taille maximale d'une ligne et que tu ne manipules pas les lignes, c'est peut etre mieux de coder ta fonction.
Pour trouver une occurences d'une string ou d'un caractere dans une autre string, y'a strchr, strstr ...
mais a ma connaissance ca ne les compte pas ... et ca ne travaille pas directement sur des fichiers ... mais c'est pas la mort a coder ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°133227
Carbon_14
Posté le 02-05-2002 à 08:46:05  profilanswer
 

Si on lit le fichier en binaire caractère par caractère, on ne s'encombre pas d'un buffer et ne compte que les CR (et/ou LF selon UNIX/Mac). Ca va vite mais oblige ensuite à relire le fichier si on veut explorer son contenu :D.

n°133238
flo850
moi je
Posté le 02-05-2002 à 09:05:18  profilanswer
 

il n'y a pas un truc dans la fonction sat qui donne la taille u'un fichier ; l e nombre de ligne ....
sinon , tu peux faire  
 
#include<unistd.h>
#include<stdio.h>
FILE *f;
system("wc -l Monfichier > tmp" );
f = fopen("tmp","rw" );
fscanf(f,"%d",&nb_ligne);
 
ca t'evitera de parcourir tout le fchier


---------------

n°133242
gilou
Modérateur
Modzilla
Posté le 02-05-2002 à 09:18:26  profilanswer
 

electricblue a écrit a écrit :

Existe-t-il une fonction ou astuce permettant de recuperer le nombre de lignes dans un fichier?? Je sais qu'on pouvait le faire sous linux grace a un "grep", ms la chuis sous windows... J'entends par ligne une chaine de caractere se terminant par '\n'. Ou je dois coder la fonction.
Plus generalement existe-t-il une fonction qui permet de compter le nombre d'occurence d'un caractere ou d'une string dans un fichier.
Merci d'avance!  




 
Un petit coup de perl devrait te faire ca sans pb.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°133254
Jar Jar
Intaigriste
Posté le 02-05-2002 à 09:37:24  profilanswer
 

HelloWorld a écrit a écrit :

si tu manipules des fichiers textes, tu peux utiliser fgets, qui lit une ligne. T'as pas a t'occuper des '\n' ou autre, fgets le fait pour toi.


Le problème avec fgets, c'est s'il y a des lignes trop longues...
Avec les extensions GNU, tu as getline qui n'a pas cette limitation, mais sinon le plus simple est de compter le nombre de caractères '\n' dans le fichier.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°133525
electricbl​ue
Pas très inspiré...
Posté le 02-05-2002 à 16:15:03  profilanswer
 

Merci a tous pr vos reponses.
Je crois que je vais utiliser la methode de helloworld, car mon fichier est relativement petit et je connais la taille max d'une ligne.

n°133531
HelloWorld
Salut tout le monde!
Posté le 02-05-2002 à 16:27:20  profilanswer
 

"Je crois que je vais utiliser la methode de helloworld"
 

Code :
  1. while(!feof(fic))
  2.     {
  3.         fgets(buffer, MAXSIZE, fic);
  4.         nb_lignes++;
  5.     }


 
(C) HelloWorld ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°133547
electricbl​ue
Pas très inspiré...
Posté le 02-05-2002 à 16:42:55  profilanswer
 

HelloWorld a écrit a écrit :

"Je crois que je vais utiliser la methode de helloworld"
 

Code :
  1. while(!feof(fic))
  2.     {
  3.         fgets(buffer, MAXSIZE, fic);
  4.         nb_lignes++;
  5.     }


 
(C) HelloWorld ;)  




 
Mdr, je sais qd meme coder ce genre de chose, d'ailleurs j'ai ecrit:
 

Code :
  1. while(fgets(buffer,MAXSIZE,fich)) {
  2.    cpt++;
  3. }


 
Evidement, la validite du descripteur de fichier est teste avec le while.

mood
Publicité
Posté le 02-05-2002 à 16:42:55  profilanswer
 

n°133584
HelloWorld
Salut tout le monde!
Posté le 02-05-2002 à 17:14:11  profilanswer
 

Heu, c'est juste le "la methode a ..." qui m'a fait sourire ...
d'ou le (C) => copyrigth ... *humour* :)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°133881
Carbon_14
Posté le 03-05-2002 à 09:12:39  profilanswer
 

De chercher les caractères "fin de ligne", ça permet accessoirement de mesurer la longueur effective de la ligne la plus longue avant de bufferiser...  
Le jour où il y a une ligne de 50000 caractères (humour), buffer trop petit.. :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] nombre de lignes dans un fichier

 

Sujets relatifs
[VB] Comment convertir un fichier HTML en fichier Excel ?[ALGO] Lire les n dernières lignes d'un fichier texte
Pb de VB avec les extration de chaine sur fichier .txt[Ada]fichier texte
[VC++] problème avec projet contenant plusieurs fichier .C[java] comment obtenir le propriétaire d'un fichier sous nt4
[C / C++] un client FTP activeX pour uploader un fichier en ASYNC ?[VB + BD Access] Limitation du nombre du requetes ?
[C++] chercher un sub-chunk dans un fichier AVI ? 
Plus de sujets relatifs à : [C] nombre de lignes dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR