编写程序将C / C++代码中的注释去掉

来源:互联网 发布:海康威视有一个无网络 编辑:程序博客网 时间:2024/06/08 14:53

今天看到一道题,觉得可以拿来锻炼一下。就自己做了一遍。

原题链接:关于程序员面试宝典中5.8节面试例题:编写一个函数,实现把C/C++程序代码中的注释去掉

/*************************功能:输入合法的C、C++程序,将注释去掉后输出*注意:“//”“/*”等等双引号之间的字符不予处理,但是/*...*/之间的双引号也不起作用,即当处于两个双引号之间时,/*不起作用,但是如果先有了/*然后出现的双引号则双引号不起作用。***************************/#include<stdio.h>#include<string.h>int main() {    char c[1024];    int FLAG=0;//指示是否遇到/*    int quote=-1;//指示是否在引号之中,1在,-1不在    int HasPrint=0;//指示当前行是否有输出。    while(gets(c)) {        HasPrint=0;        for(int i=0; i<strlen(c); i++) {            if(FLAG) {                if(c[i]=='*'&&c[i+1]=='/') {                    FLAG=0;                    i++;//跳过  /* 两个字符的输出                    continue;                }            } else {                if(c[i]=='"')quote*=-1;                if(quote==-1) { //  如果不在引号之中                    if(c[i]=='/'&&c[i+1]=='/') { //  遇到//直接跳过本行  c[i+1]不会越界,最多访问到'\0'                        break;                    }                    if(c[i]=='/'&&c[i+1]=='*') {                        FLAG=1;                    }                }                if(!FLAG) {                    putchar(c[i]);                    HasPrint=1;                }            }        }        if(HasPrint)printf("\n");    }    printf("END!");    return 0;}
0 0
原创粉丝点击