Guest User

Untitled

a guest
Oct 6th, 2013
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #define  DEFAULT  0
  3. #define  BLOCK_COMMENT  1
  4. #define  LINE_COMMENT  2
  5. #define  STRING  3
  6.  
  7. void main()
  8. {
  9.     int c;  
  10.     int mode = 0;
  11.  
  12.     while((c=getchar())!=EOF)
  13.     {
  14.         switch(mode)
  15.         {
  16.         case DEFAULT:
  17.             if (c == '\"')  //Если символ - кавычки...
  18.             {
  19.                 mode = STRING;  //...Значит это строка
  20.                 putchar(c); //Печатаем кавычки
  21.             }
  22.             else if (c == '/')  //Если видим слеш...
  23.             {
  24.                 c = getchar(); //...то смотрим следующий символ
  25.                 if (c == '/') mode = LINE_COMMENT;  //Если и он слеш, то мы в строковом комментарии
  26.                 else if (c == '*') mode = BLOCK_COMMENT;  //Если он - звезда, то мы в блочном комментарии
  27.                 else putchar('/'), putchar(c);  //Иначе рисуем слеш и следующий за ним символ
  28.             }
  29.             else putchar(c);  
  30.             break;
  31.         case BLOCK_COMMENT:  
  32.             if (c == '*') if ((c=getchar()) == '/') mode = DEFAULT;  
  33.             break;
  34.         case LINE_COMMENT:
  35.             if (c == '\n') mode = DEFAULT, putchar('\n');
  36.             break;
  37.         case STRING:
  38.             if (c == '\\') putchar(c),putchar(getchar());  //Если видим обратный слеш, печатаем его и следующий за ним символ
  39.             else if (c == '\"') mode = DEFAULT, putchar(c); //А если видим кавычки то строка завершена, печатаем их
  40.             else putchar(c);
  41.             break;
  42.         }
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment