演習1-23 K&R プログラミング言語C

演習1-23

文字を先読みしてコメントのチェックを行っている。
コメントと二重引用符の範囲判定部分が汚い・・・

#include <stdio.h>

#define TRUE  1
#define FALSE 0

int main(int argc, char *argv[])
{
    int c, d, is_comment, is_dquote;

    is_comment = is_dquote = FALSE;

    c = getchar();

    while (c != EOF) {
        d = getchar();

        if (!is_dquote && !is_comment && c == '/' && d == '*') {
            is_comment = TRUE;
        } else if (!is_dquote && is_comment && c == '*' && d == '/') {
            d = getchar();
            is_comment = FALSE;
        } else if (!is_comment && !is_dquote && c == '"') {
            putchar(c);
            is_dquote = TRUE;
        } else if (!is_comment && is_dquote && c == '"') {
            putchar(c);
            is_dquote = FALSE;
        } else if (!is_comment) {
            putchar(c);
        }

        c = d;
    }

    return 0;
}
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»