向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
-
- 帖子: 6
- 注册时间: 2011-09-01 16:05
向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
用Shell脚本,删除C源代码中的/*...*/注释,要注意以下这种情况:
/*
...
.../*.....
......*/..\*...
...
*/
/*
...
.../*.....
......*/..\*...
...
*/
- ChenFengyuan
- 帖子: 770
- 注册时间: 2008-03-23 0:39
Re: 向高手请教个问题,如何用shell脚删掉C语言中的注释部分?
用gcc -E好了..... 

-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
说下思路吧,以前写过,懒得写了,你看看符合你的情况不。
先把所有的 /* 替换成 /*\n
然后 */换成 *//n
再逐行扫描,碰到一个/*, 就设个变量标记比如说叫a=1,从这以后所有行都写到一个变量,比如b里,碰到了*/就把a再重置成0,这样b就是这段注释了。以此类推。
至于你是只要注释还是不要注释,就在print上判断不同而已。
实现awk省事点,sed亦可。
先把所有的 /* 替换成 /*\n
然后 */换成 *//n
再逐行扫描,碰到一个/*, 就设个变量标记比如说叫a=1,从这以后所有行都写到一个变量,比如b里,碰到了*/就把a再重置成0,这样b就是这段注释了。以此类推。
至于你是只要注释还是不要注释,就在print上判断不同而已。
实现awk省事点,sed亦可。
---
regards,
Kent
regards,
Kent
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
cat 2.c
#include <stdio.h>
main()
{
long l=0;
/*...*/ printf("%ld\n",++l);/*...*/
/*...
printf("%ld\n",++l);
/*...
printf("%ld\n",++l);
printf("%ld\n",++l);
...*/ printf("%ld\n",++l);
}
awk 'BEGIN{RS="\034"} {gsub("\*\/","\034");gsub(/\/\*[^\034]*\034/,"");print}' 2.c
#include <stdio.h>
main()
{
long l=0;
printf("%ld\n",++l);
printf("%ld\n",++l);
}
#这效果吗?一句就好。
#include <stdio.h>
main()
{
long l=0;
/*...*/ printf("%ld\n",++l);/*...*/
/*...
printf("%ld\n",++l);
/*...
printf("%ld\n",++l);
printf("%ld\n",++l);
...*/ printf("%ld\n",++l);
}
awk 'BEGIN{RS="\034"} {gsub("\*\/","\034");gsub(/\/\*[^\034]*\034/,"");print}' 2.c
#include <stdio.h>
main()
{
long l=0;
printf("%ld\n",++l);
printf("%ld\n",++l);
}
#这效果吗?一句就好。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 6
- 注册时间: 2011-09-01 16:05
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
回复4楼:
是的。
是的。
-
- 帖子: 6
- 注册时间: 2011-09-01 16:05
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
3楼的思路领会了,只是怎样把要删除的部分写入变量这一部不会写,能否给段代码呀,小弟在此先说声谢谢了!
-
- 帖子: 6
- 注册时间: 2011-09-01 16:05
Re: 向高手请教个问题,如何用shell脚删掉C语言中的注释部分?
要用shell啊,大哥!!ChenFengyuan 写了:用gcc -E好了.....
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
awk -F"\033" -v RS="\034" '{gsub("\*\/","\034");gsub(/\/\*[^\034]*\034/,"");print}' 2.c #实用的。Rock_Lee 写了:回复4楼:
是的。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- 我就是我2
- 帖子: 1215
- 注册时间: 2008-12-13 10:55
- 来自: the Earth
- 联系:
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
不知道ee说的shell是什么.查了wiki还是搞不懂.eexpress 写了:sed一样。先把换行替换成某特殊字符。然后一堆一堆的去掉,再恢复回车。
干嘛要shell
CLI...

苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 向高手请教个问题,如何用shell脚本删掉C语言中的注释部分?
话说极端复杂的条件下,perl真有极大优势,一句两句的,那样都无所谓的。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。