nombre de lignes dans un fichier [C] - C++ - Programmation
Marsh Posté le 02-05-2002 à 03:07:06
Euh, pour compter les lignes d'un ou plusieur fichiers, sous unix, rien ne vaut wc.
A+,
Marsh Posté le 02-05-2002 à 08:17:34
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
Marsh Posté le 02-05-2002 à 08:46:05
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 .
Marsh Posté le 02-05-2002 à 09:05:18
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
Marsh Posté le 02-05-2002 à 09:18:26
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+,
Marsh Posté le 02-05-2002 à 09:37:24
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.
Marsh Posté le 02-05-2002 à 16:15:03
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.
Marsh Posté le 02-05-2002 à 16:27:20
"Je crois que je vais utiliser la methode de helloworld"
Code :
|
(C) HelloWorld
Marsh Posté le 02-05-2002 à 16:42:55
HelloWorld a écrit a écrit : "Je crois que je vais utiliser la methode de helloworld"
|
Mdr, je sais qd meme coder ce genre de chose, d'ailleurs j'ai ecrit:
Code :
|
Evidement, la validite du descripteur de fichier est teste avec le while.
Marsh Posté le 02-05-2002 à 17:14:11
Heu, c'est juste le "la methode a ..." qui m'a fait sourire ...
d'ou le (C) => copyrigth ... *humour*
Marsh Posté le 03-05-2002 à 09:12:39
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..
Marsh Posté le 01-05-2002 à 23:13:37
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!