Conter le nombre de lignes, de mots et de caractere d'un fichier [code en c] [gcc]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 743 fois - Téléchargée 38 fois

Contenu du snippet

Comme le titre l'indique ;-)

Source / Exemple :


#include <stdio.h>

#define DEDANS 1        
#define DEHORS 0        

int main(int argc, char *argv[])
{
  FILE *fichier;  //Declaration du flux
  int c, nl, nm, nc, etat;  //nl = nb de lignes, nc = nb de caractere et nm = nb de mots
 
  etat = DEHORS;
  nl = nm = nc = 0;   //Initialise tout a 0
 
  fichier = fopen(argv[1], "r");   //Ouvre le ficheir passer en argument

  while(!feof(fichier))   //tant que l'on est pas a la fin du fichier
    {
      c = fgetc(fichier);  //recuperation caractere par caractere
      ++nc;  //donc on incremente nc (nc=nc+1)
      if(c == '\n')   //Si c = \n c'est que l'on est a la fin d'une ligne
	++nl;   //donc on incremente nl (nl=nl+1)
      if(c == ' ' || c == '\n' || c == '\t') //si on est dans un espace a la fin d'une ligne ou dans une tabulation on est pas dans un mot
	{
	  etat = DEHORS;  //donc on change l'etat et passe donc a l'etat = dehors
	}
      else if(etat == DEHORS)  //si non si l'etat est dejas = dehors
	{
	  etat = DEDANS; //on passe a etat = dedans (on est dans un mots)
	  ++nm; //donc un nouveau mots alors on incremente nm (nm=nm+1)
	 }
    }
  nm--; //Il faut decrementer nm pour eviter d'afficher un mot de trop car a la fin du fichier la boucle s'arrete et donc pas de verification de l'etat, donc on decremente (nm=nm-1)
  nc-=2; //et pour les memes raison on decrement nc de 2 (nc=nc-2)
  printf("Nd de lignes: %d\nNb de mots: %d\nNb de caracteres: %d\n", nl, nm, nc); //Affichage du resultat
}

Conclusion :


Une fois compiler, pour executer:
./nomdelexecutable fichier.txt
Le fichier passer en parametre, peut etre un fichier de n'importe quel type

A voir également

Ajouter un commentaire

Commentaires

nezza250
Messages postés
1
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
30 octobre 2007
-
bonjour je debute en c++ et j'ai un problème. je voudrais compter le nombre de caractere ligne par ligne et afficher les lignes possédant plus de 255 caratères. Merci de m'aider car tout ce que je trouve ne montre que comment compter les lignes d'un fichier.
cs_sam_aym
Messages postés
1
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2005
-
bien argumenté,BRAVO...
DeepThroat
Messages postés
11
Date d'inscription
mercredi 15 mai 2002
Statut
Membre
Dernière intervention
5 juillet 2002
-
merci ! encore un truc ki va mservir :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.