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

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

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.