小标
2018-12-03
来源 :
阅读 1464
评论 0
摘要:本文主要向大家介绍了C/C++知识点之c语言删除注释,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之c语言删除注释,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
搬运自k&r习题解答:
/*
* delete comment in C
*/
#include
#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/C+频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号