Compter les caractères...

Ce programme fait suite au programme copy1.c, et permet de compter le nombre de caractères lus sur le canal d'entrée standard.

ComptCar.c
#include <stdio.h>

void main (void)
{
long nc; /*nbre de caracteres*/
nc=0;
while (getchar()!=EOF)
{
++nc;
printf("%ld\n", nc);
}
}

Résultat

La séquence entrée est la suivante:

Je compte les lettres [Enter]

Ce qui provoque l'affichage suivant:

Je compte les lettres
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-

Remarques

  • Nous pouvons remarquer l'opérateur de pré incrémentation dans l'expression "++nc".
    Cela signifie que la valeur de la variable nc est augmentée d'une unité avant n'importe quel traitement.
    L'expression "nc++" permet d'augmenter d'une unité la valeur de la variable nc après son traitement.
  • Comme nous travaillons avec une variable de type long, "%ld
    " indique à la fonction printf que l'argument correspondant est de type long.

Compter les lignes...

ComptLign.c
#include <stdio.h>

void main (void)
{
int c, nl;
nl=0;
while ((c=getchar())!=EOF)
{
if (c=='\n')
{
++nl;
printf("%d\n", nl);
}
}
}

Résultat

La séquence entrée est la suivante:

Je[Enter]compte[Enter]les[Enter]lignes[Enter]

Ce qui provoque l'affichage suivant:

Je
1
compte
2
les
3
lignes
4
-

Attention

Si nous oublions les apostrophes qui délimitent les instructions de la condition if, cela provoque un affichage désastreux...

ComptLign.c
#include <stdio.h>

void main (void)
{
int c, nl;
nl=0;
while ((c=getchar())!=EOF)
{
if (c=='\n')
++nl;
printf("%d\n", nl);
}
}


Je
0
0
1
compte
1
1
1
1
1
1
2
les
2
2
2
3
lignes
3
3
3
3
3
3
4
-

Tout compter...

Le programme suivant nous propose de compter les lignes, les mots, et les caractères.

ComptTout.c
#include <stdio.h>

#define OUI 1
#define NON 0

void main (void)
{
int c, nl,nm,nc,mot;
mot=NON;
nl=nm,nc=0;
while ((c=getchar())!=EOF){
++nc;
if (c=='\n')
++nl;
if (c==' '||c=='\n'||c=='\t')
mot=NON;
else if (mot==NON)
{
mot=OUI;
++nm;
}
}
printf("%d lignes.\n%d mots.\n%d caracteres.\n", nl, nm, nc);
}

 

Document créé le 02/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/c-compteur.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.