#include <stdio.h>
int main(int argc, char *argv[])
{
char c1='\0',c2='\0',c3='\0';
char temp;
int mark=0;
int mark2=0;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
while(scanf("%c",&c3)!=EOF)
{
if(c2=='/')
{
if(c3=='/')
{
while(c3!='\n')
{
scanf("%c",&c3);
}
c2=c3;
scanf("%c",&c3);
}
else if(c3=='*')
{
while(scanf("%c",&c3)!=EOF)
{
if(c2=='*'&&c3=='/')
break;
c2=c3;
}
if(scanf("%c",&c3)==EOF)
mark2=1;
scanf("%c",&c2);
scanf("%c",&c3);
}
}
if(mark2!=0)
break;
if(mark!=0)
printf("%c",c2);
else
{
mark=1;
}
c1=c2;
c2=c3;
}
if(mark2==0)
printf("%c",c3);
return 0;
int main(int argc, char *argv[])
{
char c1='\0',c2='\0',c3='\0';
char temp;
int mark=0;
int mark2=0;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
while(scanf("%c",&c3)!=EOF)
{
if(c2=='/')
{
if(c3=='/')
{
while(c3!='\n')
{
scanf("%c",&c3);
}
c2=c3;
scanf("%c",&c3);
}
else if(c3=='*')
{
while(scanf("%c",&c3)!=EOF)
{
if(c2=='*'&&c3=='/')
break;
c2=c3;
}
if(scanf("%c",&c3)==EOF)
mark2=1;
scanf("%c",&c2);
scanf("%c",&c3);
}
}
if(mark2!=0)
break;
if(mark!=0)
printf("%c",c2);
else
{
mark=1;
}
c1=c2;
c2=c3;
}
if(mark2==0)
printf("%c",c3);
return 0;
}
采用毛毛虫法进行遍历,逐字处理。还可以通过一行一行的读取进行处理,在此不赘述。
本文介绍了一个C语言程序,该程序能够从输入文件中去除单行和多行注释,并将处理后的代码写入输出文件。使用了毛毛虫法逐字符处理,能够有效处理复杂的嵌套注释。
1743

被折叠的 条评论
为什么被折叠?



