Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
pp.c, la commande pp). Il
permet de mettre en forme un fichier texte contenant un programme C.
On se limitera à une version simplifiée qui s'occupe uniquement de
l'indentation et des commentaires.'\t' en début de ligne).'\n') apparait dans un commentaire, on
fermera ce commentaire et on en ouvrira un second sur la ligne
suivante.#define,
#include... ou d'autres lignes commençant par '#').
"blabla"). On pourra,
dans un premier temps, considérer qu'il n'y a pas de guillemets
dans une chaîne littérale.
cc -o pp pp.c
pp < pp.c > pp2.c
cc -o pp2 pp2.c
pp2 < pp2.c > pp3.c
diff pp2.c pp3.c
file.c suivant :
#include <stdio.h>
/* Ce programme C ne fait pas grand chose */
void main() {
int n;
char c;
c=getchar(); /* on lit un caractere */ /* sur stdin */
if (c==' ') { n++;putchar(c);}
else /* sinon,
on ne fait rien */
{ ;}
}
la ligne de commande
pp < file.c > mon_beau_file.c
va créer un fichier mon_beau_file.c qui contiendra :
#include <stdio.h>
/* Ce programme C ne fait pas grand chose */
void main()
{
int n;
char c;
c=getchar();
/* on lit un caractere */
/* sur stdin */
if (c==' ')
{
n++;putchar(c);
}
else
/* sinon, */
/* on ne fait rien */
{
;
}
}
#include <stdio.h>
main()
{
int c;
enum {ETAT_DBT_LIGNE, ETAT_NORMAL } etat = ETAT_DBT_LIGNE;
while ((c=getchar()) != EOF) {
switch (etat) {
case ETAT_DBT_LIGNE:
switch (c) {
case ' ':
case '\t':
break;
default:
putchar(c);
etat=ETAT_NORMAL;
break;
}
break;
case ETAT_NORMAL:
switch (c) {
case '\n':
putchar('\n');
etat=ETAT_DBT_LIGNE;
break;
default :
putchar(c);
break;
}
break;
}
}
}
Ce document a été traduit de LATEX par HEVEA.