Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3.  
  4. int main(int argc, char **argv) {
  5.  
  6.     FILE *input = stdin;
  7.     FILE *output = stdout;
  8.     char character;
  9.     enum {
  10.         START,
  11.         SLASH,
  12.         D_SLASH,
  13.         MLC,
  14.         E_MLC,
  15.         STR,
  16.         ESC
  17.     } state = START;
  18.  
  19.     if (argc > 1) {
  20.         input = fopen(argv[1], "r");
  21.         if (input == NULL) {
  22.             fprintf(stderr, "Nepodarilo se otevrit soubor %s\n", argv[1]);
  23.         }
  24.     }
  25.  
  26.     if (argc > 2) {
  27.         output = fopen(argv[2], "w");
  28.         if (output == NULL) {
  29.             fprintf(stderr, "Nepodarilo se otevrit soubor %s\n", argv[2]);
  30.         }
  31.     }
  32.  
  33.     while ((character = fgetc(input)) != EOF) {
  34.         switch (state) {
  35.             case START:
  36.                 if (character == '/') {
  37.                     state = SLASH;
  38.                 } else {
  39.                     fputc(character, output);
  40.                     state = START;
  41.                 }
  42.                 break;
  43.             case SLASH:
  44.                 if (character == '/') {
  45.                     state = D_SLASH;
  46.                 } else if (character == '*') {
  47.                     state = MLC;
  48.                 } else {
  49.                     state = START;
  50.                     fprintf(output, "/%c", character);
  51.                 }
  52.                 break;
  53.             case D_SLASH:
  54.                 if (character == '\n') {
  55.                     state = START;
  56.                     fputc(character, output);
  57.                 } else {
  58.                     state = SLASH;
  59.                 }
  60.                 break;
  61.             case MLC:
  62.                 if (character == '*') {
  63.                     state = E_MLC;
  64.                 }
  65.                 break;
  66.             case E_MLC:
  67.                 if (character == '/') {
  68.                     state = START;
  69.                 }
  70.                 break;
  71.             case STR:
  72.                 fputc(character, output);
  73.                 if (character == '"') {
  74.                     state = START;
  75.                 } else if (character == '\n') {
  76.                     state = ESC;
  77.                 }
  78.                 break;
  79.             default:
  80.                 break;
  81.         }
  82.     }
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement