您的位置:首页 > 编程语言 > C语言/C++

将字符串插入另一个字符串的指定位置

2017-11-29 21:12 381 查看
题目:编写一个函数,将一个字符串插入到另一个字符串的某个位置后面(例如:将”abc”插入到”abcdef”的第三个字符位置后面,结果为”abcabcdef”)。编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。

思路:

将str1字符串的指定位置后的内容复制到另一个字符串中,空间换时间降低时间复杂度;

再将str2字符串(待插入字符串)复制到str1的指定位置;

将str1和tmp拼接起来(这里用到了字符串拼接函数)。

代码实现:

#include <iostream>
#define Max_num 1000

int myStrlen(const char *str)
{
int len = 0;
while (*str++)
len++;
return len;
}

void myStrcat(char *str1, char *str2)  //拼接函数
{
int len1 = strlen(str1);
int len2 = strlen(str2);
for (int i = 0;i < len2;i++)
{
str1[len1 + i] = str2[i];
}
str1[len1 + len2] = '\0';
}

void myLink(char *str1, char *str2,int pos)
{
int len1 = myStrlen(str1);
int len2 = myStrlen(str2);
char *tmp= (char *)malloc(sizeof(char));
int cnt = 0;
for (int i = pos; i <= len1;i++)
{
//*tmp++ = str1[i];    //指针要初始化或者有相应的值,这样是错误的
tmp[cnt++] = str1[i];
}
int j;
for ( j = 0;j < len2;j++)
{
str1[ pos + j] = *str2++;
}
str1[pos + j] = '\0';
myStrcat(str1, tmp);
}

int main()
{
char str1[Max_num], str2[Max_num];
int n;
while (cin>>str1>>str2)
{
cin >> n;
myLink(str1, str2, n);
cout << str1 <<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 c++