求教!急!谢谢!用c++语言!跪谢
读出一个作业cpp文件,删除全部注释内容,即以“/*……*/”相括的文本和以“//”开始到行末的文本,生成一个新的cpp文件。...
读出一个作业cpp文件,删除全部注释内容,即以“/*……*/”相括的文本和以“//”开始到行末的文本,生成一个新的cpp文件。
展开
2个回答
2014-04-03
展开全部
哥们,你不给一点分,答题没有积极性啊,这题也不难,我给你说说思路吧,
首先:用fgets()函数来读取每一行文件,然后卖坦判断这一行文件是否包含//,如果包含,那么就删除//及其以嫌配枝后的内容。然后将内容写到另一个tem.txt文件中。结束以后,再度tem.txt文件,将文件整个读入到一个大的buf里边,然后用strstr()来匹配/*,和*/,用两个辅助指针来芹敏回卡主期间的字符串,比将其删掉。最后将buf里的内容写到result.cpp文件中。就搞定了
首先:用fgets()函数来读取每一行文件,然后卖坦判断这一行文件是否包含//,如果包含,那么就删除//及其以嫌配枝后的内容。然后将内容写到另一个tem.txt文件中。结束以后,再度tem.txt文件,将文件整个读入到一个大的buf里边,然后用strstr()来匹配/*,和*/,用两个辅助指针来芹敏回卡主期间的字符串,比将其删掉。最后将buf里的内容写到result.cpp文件中。就搞定了
展开全部
纯手打,比调用strstr什么的要快很多
#include<iostream>
#include<cstdio>
bool beg,be; //beg:出现"/*"、"*/"型注释 be:出现"//"型注释
int 胡咐i;
char now[2];
void Main()
{
be=beg=false;
for(;(now[i=++i%2]=getchar())!=EOF;)
{
if(now[i]=='/'&&now[(i+1)%2]=='/') {now[++i]=getchar();be=true;continue;}
if(be)
if(now[i]=='/n') {printf("/n");be=false;continue;}
if(now[i]=='*'&&now[(i+1)%2]=='/') {beg=true;continue;}
if(beg)
{
if(now[i]=='/'&&now[(i+1)%2]=='裤含纯老拿*')
{
beg=false;
now[++i]=getchar();
}
continue;
}
printf("%c",now[(i+1)%2]);
}
}
int main()
{
freopen("in.cpp","r",stdin);
freopen("out.cpp","w",stdout);
Main();
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询