#include
int main()
{
FILE *fp,*fp1;
char str[99]="";
int i=0;
fp=fopen("test.c","r"); //要打开的源文件
fp1=fopen("new.c","w"); //另存为
while(fgets(str,99,fp)!=NULL)
{
for(i=0;i<99;i++)
if(str[i]=='/'&&str[i-1]=='/'){str[i-1]='\n';str[i]='\0';break;}
fputs(str,fp1);
}
fcloseall();
return 0;
}
如果有/* */块注释的话,用这个
#include
#include
int main()
{
FILE *fp,*fp1;
char str[99]="",str1[99]="";
int i,j,no=0;
fp=fopen("test.c","r"); //要打开的源文件
fp1=fopen("new.c","w"); //另存为
while(fgets(str,99,fp)!=NULL)
{
for(i=0;i<99;i++)
{
if(str[i]=='/'&&str[i-1]=='/')
{str[i-1]='\n';str[i]='\0';}
if(str[i]=='*'&&str[i-1]=='/')
{str[i-1]='\0';no=1;fputs(str,fp1);}
if(str[i]=='/'&&str[i-1]=='*')
{
for(j=0;j<98-i;j++){str[j]=str[i+j+1];}
str[j]='\0';
no=0;
}
}
if(no==0)fputs(str,fp1);
}
fcloseall();
return 0;
}
2.删除注释语句功能采用动态链接库形式-我不太明白注释和dll什么关系
如果写程序删除注释,做法应该是正则表达式。你需要匹配
/* xxx*/和每行当中//开始的项。这个一般在编译原理词法分析部分都会讲。你可以找找龙书看看就好
首先新建一个动态库项目,然后把该写的外部写好,功能部分,读取一个文件,然后遍历字符串,按行遍历,然后查找//,如果有则删除他后面的所有内容