字符串问题:设计一个通用函数char *insert(char *s1,char *s2,int n)实现在字符串s1中从第m个字符开始插入字符串s2,在主程序中对该函数进行测试。
初始状态:s1: abcdefg
s2 : 1234
输入插入字符串的位置3
目标状态 :s1: ab1234cdefg
s2: 1234
#include <iostream>
#include <string>
using namespace std;
char* insert(char* s1, char* s2, int n)
{
int p = strlen(s1);//s1字符串的长度
int q = strlen(s2);//s2字符串长度
int k = (n - 1) + p ;
for (int i = n - 1; i < k; i++)//空出n个位置
{
s1[i+q] = s1[i];
}
for (int i = 0; i < q; i++)
{
s1[n - 1 + i] = s2[i];//将s2插入s1
}
return s1;
}
int main()
{
char s1[100] = "abcdefg";
char s2[100] = "1234";
cout << "插入前:" << endl;
cout << s1 << endl;;
int c;
cout << "输入要插入的位置:" << endl;
cin >> c;
insert(s1, s2, c);
cout << "插入后:" << endl;
cout << s1 << endl;
}
你是想索引重0开始吗,既然想遵从索引重零开始,那上面的减1就不要了,这样代码索引就是从零开始了,你加1,就比如,代码默认从零开始,你输入0本来就挺好,你让人家输入1然后再减1,这样达到从0开始的效果,不就不对了嘛,所以索引想要从零开始,就不用管-1了,改好了,望采纳,代码:
#include <iostream>
#include <string>
using namespace std;
char* insert(char* s1, char* s2, int n)
{
int p = strlen(s1);//s1字符串的长度
int q = strlen(s2);//s2字符串长度
int k = n + p;
for (int i = n; i < k; i++)//空出n个位置
{
s1[i + q] = s1[i];
}
for (int i = 0; i < q; i++)
{
s1[n + i] = s2[i];//将s2插入s1
}
return s1;
}
int main()
{
char s1[100] = "abcdefg";
char s2[100] = "1234";
cout << "插入前:" << endl;
cout << s1 << endl;;
int c;
cout << "输入要插入的位置:" << endl;
cin >> c;
insert(s1, s2, c);
cout << "插入后:" << endl;
cout << s1 << endl;
}
效果: