改错题(20分)【题目】 以下程序的功能是:根据字符串str中是否包含子串substr,决定如何将字符串str1插入到str的不同位置。插入方法是:如果str中包含子串substr,则将str1插入到str中首次出现的子串substr之后;否则,插入到str的尾部。 正确程序的输出如下: 原字符串:aabcd12345 子字符串:abcd 插入字符串:ABC 新字符串:aabcdABC12345 含有错误的源程序如下: #include #include char *find(char *str,char *substr){unsigned lent=strlen(str); for(char *p1=str,*p2=substr;strlen(p1)>=len;p1++){for(unsigned i=0;ilen) return p1+len; } return 0; }char *insert(char *str,char *substr,char *str1){ char p=find(str,substr); if(p)strcat(str,str1); else{char *tmp=new char[strlen(str)+strlen(str1)+1];strcpy(tmp,str1)strcat(tmp,p);strcpy(p,tmp);delete []tmp; } return str;}void main() {char *str=new char[80],substr[]="abcd",str1[]="ABC";strcpy(str,"aabcdl2345");’cout<<"原字符串:"<
参考答案:
unsigned len=strlen(str); str改为substr if(i>len) 改为i>=len char p=find(str,substr); char p改为char *p if(p) p改为p==0或!p