LINUX.ORG.RU
Ответ на: комментарий от anonymous

какие там 1173 байта, лексику для flex-а можно и в меньше впихнуть, правда вот конечный результат будет скорее всего великоват :)

anonymous
()

может, на perl ?

anonymous
()

#include <stdio.h>

int main()
{
    int c;
    int inside_comment = 0;
    while ((c = getchar()) != EOF)
    {
        if (!inside_comment)
        {
            if (c == '/')
            {
                if ((c = getchar()) == '*')
                {
                    inside_comment = 1;
                    continue;
                }
                else
                {
                    putchar('/');
                    putchar(c);
                    continue;
                }
            }
            
            putchar(c);
        }
        else
            if (c == '*')
                if (getchar() == '/')
                    inside_comment = 0;
    }
}

human0id ★★★
()
Ответ на: комментарий от human0id

P.S: BUG - так же вырезает комментарии внутри строк.
P.P.S: 681 байт
P.P.P.S: после питона писать на ц жутко и скобочки забываешь ставить:-)

human0id ★★★
()
Ответ на: комментарий от watashiwa_daredeska

Всем спасибо, парни.

KLIM
() автор топика
Ответ на: комментарий от human0id

> P.S: BUG - так же вырезает комментарии внутри строк.

BUG2 - свежая редакция стандарта C допускает комментарии в стиле C++ (т.е. "//"), вследствие чего эта программ признается некорректной :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

> BUG2 - свежая редакция стандарта C допускает комментарии в стиле C++ (т.е. "//"), вследствие чего эта программ признается некорректной :-)

С утра уже пофиксил. Патч нужно постить? :-)

human0id ★★★
()
Ответ на: комментарий от KLIM

patch

17a18,22
>                 else if (c == '/')
>                 {
>                     inside_comment = 2;
>                     continue;
>                 }
29,30c34,42
<             if (c == '*')
<                 if (getchar() == '/')
---
>             if (inside_comment == 1)
>             {
>                 if (c == '*')
>                     if (getchar() == '/')
>                         inside_comment = 0;
>             }
>             else if (inside_comment == 2)
>             {
>                 if (c == '\n')
31a44
>             }

human0id ★★★
()
Ответ на: patch от human0id

ОК. Можно и так.

KLIM
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.