(3)编写算法,实现下面函数的功能,函数void insert(char*s,char*t,int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数)
#include <stdio.h>
void insert(char *s,char *t,int pos){
char ch,*ptr1 = s+pos,*ptr2 = t,*ptr3;
while(*ptr1){
//交换ptr1 和ptr2的值
ch = *ptr1;
*ptr1 = *ptr2;
*ptr2 = ch;
ptr1++;ptr2++; //指向下一个字符
if(*ptr2 =='\0')ptr2 = t; //t字符串右移直到t的首字符和ptr1对齐
}
ptr3 = ptr2; //ptr2位置前的字符为s串最后的字符,需要在最后复制过去
while(*ptr2){ //t中还有没有复制完的字符复制过去
*ptr1++ = *ptr2++;
}
ptr2 = t;
while(ptr2 != ptr3){ //s中最后的字符复制过去
*ptr1++ = *ptr2++;
}
*ptr1 = '\0'; //由于前面把 ‘\0’覆盖了,结尾处添上
}
int main() {
char s[255] = "i don't know happen to this world!";
char t[255] = "what ";
insert(s,t,13);
printf("%s",s);
return 0;
}