| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:关于滤去注释部分的问题
只看楼主 加入收藏
slamzhzm
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-9
收藏
 问题点数:0 回复次数:9 
关于滤去注释部分的问题
原题是这样的:滤去某个C语言文件中的所有注释部分。

貌似很难判定什么时候开始滤去,如果注释部分中包含有/或*,或程序中有连续的/*就比较麻烦了。。。。

恳请高手帮忙
搜索更多相关主题的帖子: 注释 
2007-01-06 17:39
slamzhzm
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-9
收藏
得分:0 
自己顶一下
2007-01-06 17:40
slamzhzm
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-9
收藏
得分:0 
再顶  
2007-01-06 17:42
slamzhzm
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-9
收藏
得分:0 

冷清啊~~~~~~~~

2007-01-06 18:01
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
例个例子.

谁有强殖装甲第二部,可以Q我460054868
2007-01-06 18:14
梦幻人生
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-1
收藏
得分:0 
一旦有/*就开始滤,遇到*/就结速

You are larger than life!
2007-01-06 21:17
slamzhzm
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-9
收藏
得分:0 
如果像LS说的,printf里面有 /* 或 */怎么办
2007-01-07 14:31
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

再加个引号标记就行了,如果是引号外,就去掉,引号外就不去。
不过要注意真引号和假引号,如
printf("/*dfsa*/\"\"dd\n");有假引号,为此,要再引入一个引号标记'\'字符.
这里不需要讨论引号的配对,及/*,*/的配对,因为编译器一般都不对注释符号进行配对。


对不礼貌的女生收钱......
2007-01-07 14:48
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
printf("\/**\/");

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-07 14:52
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
刚才断线了会,我正好写了个滤掉注释的,你看看,
有没有什么情况漏掉的,
在c++下运行,纯c没有bool类型,
如果只有c编译器,在头文件加句typedef enum{false,true}bool;也行.
[CODE]#include <stdio.h>
int main()
{
FILE *fp=fopen("1.txt","r+");
char ch;
bool isInQuotation=false,leftSlash=false,rightSlash=false,isStar=false;
while((ch=fgetc(fp))!=EOF)
{
if(ch=='\\')
{
rightSlash=true;
leftSlash=false;
putchar(ch);
}
else if(rightSlash==false&&isInQuotation==false&&ch=='\"')
{
isInQuotation=true;
leftSlash=false;
putchar(ch);
}
else if(rightSlash==false&&isInQuotation==true&&ch=='\"')
{
isInQuotation=false;
leftSlash=false;
putchar(ch);
}
else if(isInQuotation==false&&ch=='/')
{
leftSlash=true;
}
else if(leftSlash==true&&ch=='*')
{
while((ch=fgetc(fp))!=EOF)
{
if(ch=='*')
isStar=true;
else if(ch!='/') isStar=false;
if(isStar==true&&ch=='/')
{
leftSlash=false;
break;
}
}
}
else if(leftSlash==true)
{
putchar('/');
putchar(ch);
leftSlash=false;
}
else
{
putchar(ch);
leftSlash=false,rightSlash=false,isStar=false;
}
}
return 0;
}[/CODE]

对不礼貌的女生收钱......
2007-01-07 15:50
快速回复:关于滤去注释部分的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017810 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved