免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 雨丝风片
打印 上一主题 下一主题

请教去除c代码中的注释的方法 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-10-24 23:35 |只看该作者
你的所有行都放进缓冲区了。
欸,没想到费这么大劲,就只是节省了一点点地存储空间。

论坛徽章:
0
22 [报告]
发表于 2006-10-24 23:38 |只看该作者
gcc -E  program.c

论坛徽章:
0
23 [报告]
发表于 2006-10-24 23:43 |只看该作者
原帖由 awk就是awp加ak 于 2006-10-24 23:35 发表
你的所有行都放进缓冲区了。
欸,没想到费这么大劲,就只是节省了一点点地存储空间。


什么意思?

下面是格式改好的版本:

  1. sed -n 'H;${g;s#/\*[^*]*\*/##g;s[\n* *\n//g;p}' file
复制代码

论坛徽章:
0
24 [报告]
发表于 2006-10-24 23:44 |只看该作者
绝了!哈哈

论坛徽章:
0
25 [报告]
发表于 2006-10-24 23:45 |只看该作者
上面的多了两个字符,操作失误~!

应该是:

  1. sed -n 'H;${g;s#/\*[^*]*\*/##g;s/\n *\n//g;p}' file
复制代码

论坛徽章:
0
26 [报告]
发表于 2006-10-24 23:46 |只看该作者
原帖由 qqq112233g 于 2006-10-24 23:43 发表


什么意思?

下面是格式改好的版本:

  1. sed -n 'H;${g;s#/\*[^*]*\*/##g;s[\n* *\n//g;p}' file
复制代码

我是说,我开始的时候觉得每行都H很浪费的说,一般源文件不大,这个跟本不用考虑。

论坛徽章:
0
27 [报告]
发表于 2006-10-24 23:52 |只看该作者
呵呵,原来如此:
睡觉了,大伙晚安~!
身体是革命的本钱。。

论坛徽章:
0
28 [报告]
发表于 2006-10-25 01:38 |只看该作者
我来写标准测试程序:



  1. /*
  2. * 这里是/*夸行测试
  3. */

  4. // 这里是//单行测试

  5. /*
  6. // 这里是混合测试
  7. */
  8. #include <stdio.h>

  9. int main(int argc, char *argv[])
  10. {
  11.     printf("写脚本清除c代码中被/*和被*/注释的块,您成功了吗? 对了,\n");
  12.     printf("还有这玩意://, 它也得被清理!\n");
  13.     return 0;
  14. }
复制代码

论坛徽章:
0
29 [报告]
发表于 2006-10-25 03:27 |只看该作者
原帖由 seeLnd 于 2006-10-24 23:38 发表
gcc -E  program.c

这个答案我喜欢^_^不过要做就做全嘛楼上所说的那个就标准的就不行还有如果有头包函也会展开
这是帮你补的一点我什么都没做应该由这个来结贴了如果还有人往里钻那就说不过去了



  1. sed 's/^#include/=&/'  youfile|gcc -E -|sed "/^$\|^#/d;s/=#/#/"



  2. to 楼主
  3. 我那两个方法都经过测试在我机上通过
  4. 开始以为删一般注释就行了都没有考虑你所指出的那个问题现在把它重新贴一下
  5. perl -ne 'if(/\/\*/&&/\*\//||/^$/){print if(s/\/\*.*\*\/// && !/^\s+$/);next}elsif(/\/\*/){$flag=1;print if(s/\/\*.*$// && !/^\s+$/); next}elsif(/\*\//){$flag=0;print if(s/^.*\*\/// && !/^\s+$/);next}else{next if($flag);print}'
复制代码

这个已经能够满足你所说5种要求
不过如果想像楼上那样变态注解还行不通
seeLnd这个方法已经接近完美

[ 本帖最后由 lovesaka 于 2006-10-25 03:40 编辑 ]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
30 [报告]
发表于 2006-10-25 07:08 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP