《C程序设计语言》练习1-23

练习1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。

#include <stdio.h>

#define NORMAL 0
#define WITHIN_COMMENT 1
#define WITHIN_STRING  2
#define START_COMMENT  3
#define STOP_COMMENT   4

int main()
{
    int c;
    int status = NORMAL;

    while ( (c = getchar()) != EOF) {
        switch (status)
        {
        case NORMAL:
            if (c == '"') {
                status = WITHIN_STRING;
                putchar(c);
            } else if (c == '/') {
                status = START_COMMENT;
            } else {
                putchar(c);
            }
            break;
        case WITHIN_COMMENT:
            if (c == '*') {
                status = STOP_COMMENT;
            }
            break;
        case WITHIN_STRING:
            if (c == '"') {
                status = NORMAL;
                putchar(c);
            } else {
                putchar(c);
            }
            break;
        case START_COMMENT:
            if (c == '*') {
                status = WITHIN_COMMENT;
            } else {
                status = NORMAL;
                putchar('/');
                putchar(c);
            }
            break;
        case STOP_COMMENT:
            if (c == '/') {
                status = NORMAL;
            } else {
                status = WITHIN_COMMENT;
            }
            break;
        }
    }
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享