作业帮 > 综合 > 作业

c语言的填空题,求帮忙啊

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 15:02:34
c语言的填空题,求帮忙啊
以下程序的功能是将原old字符串中所有出现的sub子串处替换为rpl子串,其余不变,并将最终结果存入news中,请将程序补充完整.
#include
void main()
{ char old[80],sub[80],rpl[80],*news,*s1,*s2;
gets(old);
gets(sub);
gets(rpl);
while( ? )
{ for(s1=old,s2=sub;*s1!='\0'&& ? ;s1++,s2++)
if(*s2!='\0')
*news++= ? ;
else
{ for(s2=rpl;*s2!='\0';s2++)
*news++= ? ;
? ;
}
}
*news='\0';
}
请问5处打问号的地方该填什么?
#include<stdio.h>
#include<string.h>
void replace(char *old,char *sub,char *rpl,char* &news)
{
char *s1=NULL,*s2=NULL,*p_bak=news;
while(*old!='\0')
{
for(s1=old,s2=sub;*s1!='\0'&&*s2!='\0'&&*s1==*s2;s1++,s2++)
continue;
if(*s2!='\0')
*news++=*old++;
else
{
for(s2=rpl;*s2!='\0';s2++)
*news++=*s2;
old=old+strlen(sub);
}
}
*news='\0';
news=p_bak;
}
void main(){
char old[80]="abcuvwabuv uvuvwx uvxw",sub[80]="uvw",rpl[80]="abcd";
int len = strlen(old)/strlen(sub)*strlen(rpl)+strlen(old)%strlen(sub)+1;
char *p = new char[len];
memset(p,0x00,len);
replace(old,sub,rpl,p);
printf("%s\n",p);
}
再问: 这是填空题,别的不能变的,还有别的答案吗,谢谢
再答: 全球仅此一份。 如果还有别的答案,那就是 void replace(char*old,char*sub,char*rpl,char** news) 把所有的*news++,替换成*(*news+)+ 在还有 replace(old,sub,rpl,&p);