vc++相关程序问题

vc++相关程序问题以及其利用指针访问数组应用实践问题……谢谢了……

img

插入位置过大怎么处理呢?

img

下面的代码是,插入位置超过s1的长度时,直接原样输出s1.
指针操作字符数组代码如下:

#include <iostream>
#include <cstring>
using namespace std;
char* insert(char* s1, char* s2, int n)
{
    int i = 0;
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    if (n > len1 + 1)
        return s1;
    else
    {
        int pos = n - 1;
        for (i = len1 + len2 - 1; i >= pos + len2; i--)
            *(s1+i) = *(s1+i - len2);
        for (i = 0; i < len2; i++)
            *(s1+i + pos) = *(s2+i);
        *(s1+len1 + len2) = 0;//结尾
        return s1;
    }
}

int main()
{
    char s1[100];
    char s2[100];
    int pos;
    cout << "请输入字符串1:";
    cin >> s1;
    cout << "请输入字符串2:";
    cin >> s2;
    cout << "输入插入字符串的位置:";
    cin >> pos;
    insert(s1, s2, pos);
    cout << "插入后的字符串1:" << endl;
    cout << "s1:" << s1 << endl;
    cout << "s2: " << s2 << endl;
}

将第一个字符串中指定位置之后的字符都向后移动n个位置,再将第二个字符串加入第一个字符串指定的位置即可

#include <iostream>
#include <string>
using namesapce std;
char *insert(char *s1,char *s2,int n)
{
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    if(len1 < n)
        n = len1;
    if(n<=0)
        n=1;
    for(int i=len1-1;i>=n-1;i--)
    {
        s1[i+len2] = s1[i];
    }
    for(int i=n-1;i<n-1+len2;i++)
        s1[i] = s2[i-n+1];
    return s1;
}
int main()
{
    char a[100]={0},b[20],n;
    cin>>a>>b>>n;
    cout<<insert(a,b,n);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632