Compte de mots dans une chaine de caractere

zeo - 10 déc. 2001 à 17:10
 Jo - 10 déc. 2001 à 17:37
Salut,
j'ai trouvé ce code source sur votre site je n'arrive pas a le compiler avec visual c++ 6.0

#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*/
}

cordialement

1 réponse

Salut,
je suis l'autheur de cette source, et ce que je peut te direc'est que ce code a ete ecrit en ANSI-C et devrait, normalement compiler avec tous compilateur, mais bon peut etre que Visual-C++ c'est different, par contre je peut te dire que ce code se compile sans aucun problme avec GCC qui est un compilateur ANSI-C
0
Rejoignez-nous