牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-11-29 投稿人: 浏览次数:1875

题目:编写一个函数,将一个字符串插入到另一个字符串的某个位置后面(例如:将”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] = "";
}

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] = "";
        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;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。