我记得在我之前的一篇文章中,我写过一篇关于输出程序文件本身的文章。 今天我将对那篇文章进行一些扩展。
程序员在编写程序时,常常会添加一些注释,以便以后更容易理解。
C/C++中的注释有两种类型,如下:
(1)//评论内容
(2)/*评论内容[\n]*/
下面我们就分析这两种情况,看看如何删除这些注释。
对于第一种情况,以两个双斜杠开头的注释写法,只要我们在读取字符时遇到“/”斜杠,继续判断下一个斜杠是否是“/”即可。
如果是的话,说明后面的部分都是注释。 由于这种方式注释的单行内容,我们必须读取文件,直到遇到换行符;
如果不是,我们需要判断后面的字符是否是'*'。 如果是,则属于第二种评论方式。 这时我们需要找到的注释结束标记应该是'*/',即相邻的两个字符是'*'和'/'。
根据以上简单分析,可以编写如下C语言程序:
#
#
int main()
FILE *file=fopen("main.c","r");
如果(文件==NULL)
("main.c");//错误输出
0;
char ch,tmp='\0';
/**/
while((ch=fgetc(文件))!=EOF)
if(ch=='/')
ch=fgetc(文件);
if(ch=='/')
while((ch=fgetc(file))!='\n');
fputc(ch,);
;
}否则如果(ch=='*')
while((ch=fgetc(文件)))
if(tmp=='*'&&ch=='/')
休息;
tmp=ch;
;
fputc(ch,);
(文件);
0;
}输出结果:
从运行结果可以看到,原程序文件中的注释已经被删除了……