练习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