c语言源程序注释符,怎么编个程序把C语言源程序文件的注释去掉后存入另一个文件...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//将写好的hello.c放入工程目录

#include

main()

{

FILE *q,*p; //声明两个文件指针

char a[1000],c;//数组a,字符c

int i,end;//i用于计数,end用于标记是否读到文件末尾

p=fopen("F:\\hello.c","r");//读方式打开p

q=fopen("F:\\new_hello.c","w");//写方式打开q

while((fgets(a,999,p))!=NULL)//读取一行存入a,循环直至文件末尾

{

end=0;//末尾标记置为0

for(i=0;a[i]!='\0';i++)//循环a中元素,直至字符串尾

{

if(a[i]!='/')fprintf(q,"%c",a[i]);//如果a[i]不是'/'就直接输出到q中(也就是new_hello.c)

else//a[i]是'/'的情况

{

if(a[i+1]=='/')break;//如果下一个字符也是'/',说明出现了'//'随后都是注释,直接break读下一行

else

if(a[i+1]=='*')//如果下一个是'*',是长注释

{

c=fgetc(p);//读下一个字符

while(c!=EOF)//防止意外,检查c是否到文件末尾

{

if(c=='*')//如果c是*

{

c=fgetc(p);//再读一个字符

if(c=='/')break;//如果是'/'说明到了注释的末尾,跳出

if(c==EOF)break;//如果是EOF,说明到了文件末尾,跳出

fprintf(q,"*%c",c);//都不是,输出*和又读的字符c

}

c=fgetc(p);//读下一字符

}

if(c=='/')//如果因为读到'/'而跳出上面的循环,说明经过的是注释

{

if((fgets(a,999,p))==NULL)//从此处再读一行,if内的语句总会执行

{

//fgets返回NULL说明到了文件尾

end=1;//结尾标志置1

break;//跳出

}

i=-1;//未到文件尾,i置-1,因为a重读了一行,在for循环中,保证下次从0开始

}

if(c==EOF)//如果因为读到EOF而跳出循环,说明不正常的读到了文件尾

{

end=1;//结尾标志置1

break;//跳出

}

}

else fprintf(q,"%c",a[i]);//正常情况,即'/'后不是'*'或'/',不是注释,输出

}

}

if(end==1)break;//结尾标志为1时,跳出循环

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值