/*----------------------------------------------------------*/ /* */ /* AUTHOR : Eric VIOLARD */ /* E-MAIL : violard@icps.u-strasbg.fr */ /* ORGANISM : Université Louis Pasteur (Strasbourg) */ /* CREATION : 08/11/02 */ /* MODIFICATION : 03/12/02 */ /* */ /* ---------------------------------------------------------*/ /* Programme qui "filtre" un programme C en otant ses commentaires. Le programme est lu sur l'entrée standard et recopié sans ses commentaires sur la sortie standard. Il s'agit d'une version simplifiée où l'on suppose que le programme C est bien formé. En particulier, les commentaires se terminent et ils ne peuvent pas etre imbriqués. De plus, on ne considère pas le cas spécial des chaines de caractères. */ #include /* pour utiliser les fonctions getchar et putchar */ main() { /* déclarations */ char c; /* le caractère courant (le dernier caractère lu) */ char c_prec; /* le caractère précédent */ c = getchar(); /* lecture d'un premier caractère */ while(c!=EOF) /* tant que ce n'est pas la fin de fichier */ { /* --- passage au prochain caractère --- */ c_prec = c; /* mise à jour de c_prec */ c = getchar(); /* lecture du prochain caractère */ if(c_prec=='/' && c=='*') /* en début de commentaire */ { /* --- on passe tous les caractères du commentaire --- */ /* --- passage au prochain caractère --- */ c_prec = c; /* mise à jour de c_prec */ c = getchar(); /* lecture du prochain caractère */ do { /* --- passage au prochain caractère --- */ c_prec = c; /* mise à jour de c_prec */ c = getchar(); /* lecture du prochain caractère */ } while(!(c_prec=='*' && c=='/')); /* jusqu'à arriver à la fin du commentaire */ /* --- passage au prochain caractère --- */ c_prec = c; /* mise à jour de c_prec */ c = getchar(); /* lecture du prochain caractère */ } else /* --- affichage du caractère précédent --- */ putchar(c_prec); } }