Conter le nombre de ligne, de caracteres et de mots dans un fichier [code en c] [gcc]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 436 fois - Téléchargée 38 fois

Contenu du snippet

Ici nous allons voir, comme le titre l'indique, comment compter le nombre de mots, de lignes et de caractere contenu dans un fichiers

Source / Exemple :


#include <stdio.h>

#define DEDANS /*a l'interieur d'un mot*/
#define DEHORS /*a l'exterieur d'un mot*/

main(int argc, char *argv[])
{
	int c, nl, nm, nc, etat;	//declaration des variables

	etat = DEHORS;			
	nl = nm = nc = 0;		//toutes initialisees a 0

	FILE *fic;
	fic = fopen(argv[1], "r");	//ouvre le fichier en lecture seule

	while(!feof(fic))	//tant que je suis pas a la fin du fichier
	{
		c = fgetc(fic);		 
		++nc;			//incremente nc, donc nc + 1
		if(c == '\n')		//Si je suis a la fin de la ligne donc nouvelle ligne et j'incremente alors nl
			++nl;
		if(c == ' ' || c == '\n' || c == '\t')  //Si je suis pas dans un mot je suis don dehors 
			etat = DEHORS;    //alors on change l'etat
		else if(etat == DEHORS)   //Si l'etat est egal a dehors ca veut dire un nouveau mot
		{
			etat = DEDANS;	  //donc on revient dans l'etat dedans
			++nm;		  //et on incremente donc nm
		}
	}
	printf(\nNombre de ligne: "%d\nNombre de mot: %d\nNombre de caracteres: %d\n", nl, nm, nc);  //Affichage du resultat
}

Conclusion :


Execution du programme:
programme fichier.txt

A voir également

Ajouter un commentaire

Commentaire

Messages postés
6
Date d'inscription
lundi 11 août 2003
Statut
Membre
Dernière intervention
16 novembre 2004

A la vue de ce code, il me semble qu'il y a un pb : les valeures qui indiquent la ligne et la colonne sont incrémentés, ce qui parait logique, mais a quel moment y-t-il un deplacement d'un caractére au suivant? ainsi que le retour a la ligne. sinon ça compte un nombre infini de fois le premier caractere du fichier .txt non?

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.