以下是从 C 程序中删除注释的代码,但删除注释的代码存储在另一个程序中。
#include<stdio.h>
main(int argc , char *argv[])
{
FILE *fp;
char ch;
fp=fopen(argv[1],"r");
fp1=fopen(argv[2],"w");
while(1)
{
ch=fgetc(fp);
if(ch==EOF)
break;
else
{
if(ch=='/')
{
ch=fgetc(fp);
if(ch=='/')
{
while(1)
{
ch=fgetc(fp);
if(ch=='\n')
goto label;
}
}
if(ch=='*')
{
while(1)
{
ch=fgetc(fp);
if(ch=='*')
{
ch=fgetc(fp);
if(ch=='/')
{
while(1)
{
ch=fgetc(fp);
goto label;
}
}
else
printf("*");
}
}
}
else
printf("/");
}
}
label:
fputc(ch,fp1);
}
fclose(fp);
fclose(fp1);
}
现在我想制作一个程序,从同一个文件中删除评论。所以当我们打开它时,评论不应该存在。请指导我,因为我不知道如何制作这样的程序?
最佳答案
这不是一项简单的任务,使用 fgetc
您的代码会在以下情况下失败:
char *s = "Comments starts with /*";
如果这不是练习并且您正在使用 gcc
,我建议使用 fpreprocessed
标志跳过注释:
gcc -fpreprocessed -P -dD -E test.c > cleancode.c
然后用diff
获取差异(注释):
diff -ignore-all-spaces test.c cleancode.c > comments.c
关于C程序从同一个文件中删除注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24607159/