求教!急!谢谢!用c++语言!跪谢

读出一个作业cpp文件,删除全部注释内容,即以“/*……*/”相括的文本和以“//”开始到行末的文本,生成一个新的cpp文件。... 读出一个作业cpp文件,删除全部注释内容,即以“/*……*/”相括的文本和以“//”开始到行末的文本,生成一个新的cpp文件。 展开
 我来答
匿名用户
2014-04-03
展开全部
哥们,你不给一点分,答题没有积极性啊,这题也不难,我给你说说思路吧,
首先:用fgets()函数来读取每一行文件,然后卖坦判断这一行文件是否包含//,如果包含,那么就删除//及其以嫌配枝后的内容。然后将内容写到另一个tem.txt文件中。结束以后,再度tem.txt文件,将文件整个读入到一个大的buf里边,然后用strstr()来匹配/*,和*/,用两个辅助指针来芹敏回卡主期间的字符串,比将其删掉。最后将buf里的内容写到result.cpp文件中。就搞定了
亥沛槐07h
2014-04-03
知道答主
回答量:1
采纳率:0%
帮助的人:2.3万
展开全部

纯手打,比调用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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式