vc++相关程序问题以及其利用指针访问数组应用实践问题……谢谢了……
插入位置过大怎么处理呢?
下面的代码是,插入位置超过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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!