希望论坛朋友们帮忙解决这个问题
下面代码使用switch case函数写的消掉注释的一个程序,现在我想用if else改写,可是,逻辑我实在写不出来,写了好几次,总感觉逻辑上是走得通,可是代码上走不通。如果不能用if else改写,有什么其他方法可以呢?希望大家为我解答:
#include<stdio.h>
enum{COPY,START,COMMENT,END};
int main()
{
char c;
int state=COPY;
printf("input C program end with ctrl+z:\n");
while((c=getchar())!=EOF)
switch(state){
case COPY:
if(c='/')state=START;
else putchar(c);
break;
case START:
if(c=='*')state=COMMENT;
else
{
putchar('/');
state=(c=='/')?START:(putchar(c),COPY);
}
break;
case COMMENT:
if(c=='*')state=END;
break;
case END:
state=(c=='/')?COPY:((c=='*')?END:COMMENT);
}
return 0;