首页 > 代码库 > c语言删除注释
c语言删除注释
搬运自k&r习题解答:
/* * delete comment in C */ #include<stdio.h> #define normal 0 void rcomment(int c); void in_comment(void); void echo_quote(int c); main() { int c; while ((c = getchar()) != EOF) rcomment(c); return 0; } void rcomment(int c) { int d; if (c == ‘/‘) if ((d = getchar()) == ‘*‘) in_comment(); else if (d == ‘/‘) { putchar(c); rcomment(d); } else { putchar(c); putchar(d); } else if (c == ‘\‘‘ || c == ‘"‘) echo_quote(c); else putchar(c); } void in_comment(void) { int c,d; c=getchar(); d=getchar(); while(c!=‘*‘ || d!=‘/‘){ c=d; d=getchar(); } } void echo_quote(int c) { int d; putchar(c); while((d=getchar())!=c){ putchar(d); if(d==‘\\‘) putchar(getchar()); } putchar(d); }
书中答案rcomment函数中的
else if (d == ‘/‘) { putchar(c); rcomment(d); }这个语句看了好久没没明白什么意思,测试程序的话,不处理‘//‘注释,只删除/* */之间的,不敢确定是不是答案有问题。
估计这是原本应该删除//到换行之间的注释的,若是这样,这个语句应改为:
else if (d == ‘/‘) { while(getchar()!=‘\n‘); }
c语言删除注释
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。