题目:有两个字符串,将主字符串中的所有子字符串删去并输出。例如,主字符串为“This book is a very good book",子字符串为”book",结果为“This is a very good"。
问题:请问下面的代码哪里有问题呀?
#include
using namespace std;
#include
int withstr(char*s1,char*subs)
{
while(*subs&&*s1==*subs)
{
s1++;subs++;
}
return !(*subs);
}
char *delsub(char s1,char subs)
{
char *p1,*p2;
int len=strlen(subs);
p2=p1=s1;
while(*p1)
{
if(withstr(p1,subs))
p1+=len;
else *p2=*p1++;
}
*p2='\0';
return *s1;
}
int main()
{
char str1[80]="This book is a very good book";
char str2[40]="book";
cout<delsub(&str1,&str2[40])<return 0;
}
#include <cstring>
#include <iostream>
using namespace std;
int withstr(char *s1, char *subs)
{
while (*subs && *s1 == *subs)
{
s1++;
subs++;
}
return !(*subs);
}
// char *delsub(char s1, char subs)
char *delsub(char *s1, char *subs)
{
char *p1, *p2;
int len = strlen(subs);
p2 = p1 = s1;
while (*p1)
{
if (withstr(p1, subs))
p1 += len;
else
*p2++ = *p1++; //*p2 = *p1++;
}
*p2 = '\0';
return s1; // *s1;
}
int main()
{
char str1[80] = "This book is a very good book";
char str2[40] = "book";
cout << str1 << endl
<< str2 << endl;
// cout << delsub(&str1, &str2[40]) << endl;
cout << delsub(str1, str2) << endl;
return 0;
}