刚才断线了会,我正好写了个滤掉注释的,你看看,
有没有什么情况漏掉的,
在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]