c语言删掉注释,c语言删除注释

博客内容探讨了C语言代码中删除/*...*/注释的实现,主要关注rcomment函数。作者指出,代码可能存在一个错误,即对于‘//’单行注释的处理不正确。文中提出,原始代码可能原本打算处理‘//’直到换行的注释,但实现有误,建议修改为使用循环读取直到遇到换行符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

* 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‘);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值