记得在我的以前的一篇文章中曾经写过一篇输出程序文件本身的文章,今天对那篇文章稍作拓展。
一般程序员在写程序的时候,为了能够让以后理解更加方便容易,往往会添加上一些注释。
注释在C/C++中有两种类型,分别如下所示:
(1)//注释内容
(2)/* 注释内容 [\n]*/
下面我们就对这这两种情况进行分析,看看如何删去这些注释部分。
对于第一种情况,以两个双斜杠开头的注释写法,只要我们在读取字符时遇到一个‘/’斜杠时继续判断下一个是不是一个‘/’即可。
如果是,则说明后面的部分都是注释,由于这种方式注释的单行内容,所以我们要一直读取文件直到遇到一个换行符为止;
如果不是,则我们需要判断后面一个字符是不是一个‘*’,如果是的话,则属于第二种注释方式,此时我们需要找的注释结尾标志应该是一个“*/”,即相邻的两个字符依次是‘*’和‘/’。
根据上面的简单分析,可以写出下面的C语言程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file=fopen("main.c","r");
if(file==NULL)
{
perror("main.c");//错误输出
return 0;
}
char ch,tmp='\0';
/*adnaiofa*/
while((ch=fgetc(file))!=EOF)
{
if(ch=='/')
{
ch=fgetc(file);
if(ch=='/')
{
while((ch=fgetc(file))!='\n');
fputc(ch,stdout);
continue;
}else if(ch=='*')
{
while((ch=fgetc(file)))
{
if(tmp=='*'&&ch=='/')
{
break;
}
tmp=ch;
}
continue;
}
}
fputc(ch,stdout);
}
fclose(file);
return 0;
}
输出结果:
从运行结果可以看到,原本程序文件中的注释部分都被删除掉了...