如何编写函数,用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?
3个回答
展开全部
按照你说的,最好用字符数组来存放字符串
这样字符数组名就是这个字符串的指针了,指定位置就可以直接用指针加偏移量来确定
例如 char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
假设将字符串b插入到字符串a的第十位之后(插入的位置超过字符串a的长度就没有意义了)
首先为字符串b腾出空位
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = *(a+10+i);
}
然后将b插入到腾出来的空位即可
for(int j=0;j<len;j++)
{
*(a+10+j) = b[j];
}
这个是最原理的东西,如果你能理解这个,那么后两个for循环其实可以合并为一个,全部代码为
char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = a[10+i];
*(a+10+i) = b[i];
}
这样字符数组名就是这个字符串的指针了,指定位置就可以直接用指针加偏移量来确定
例如 char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
假设将字符串b插入到字符串a的第十位之后(插入的位置超过字符串a的长度就没有意义了)
首先为字符串b腾出空位
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = *(a+10+i);
}
然后将b插入到腾出来的空位即可
for(int j=0;j<len;j++)
{
*(a+10+j) = b[j];
}
这个是最原理的东西,如果你能理解这个,那么后两个for循环其实可以合并为一个,全部代码为
char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = a[10+i];
*(a+10+i) = b[i];
}
展开全部
#if 1
//用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?
#include<iostream>
#include <string.h>
int main()
{
using namespace std;
char str1[] = "11111111 ";
printf("%s\n",str1);
char * name = "tom";
strncpy(str1+3,name,strlen(name));
printf("%s\n",str1);
/************************************************************************/
/* 结果 */
/* 11111111 */
/* 111tom11 */
/************************************************************************/
return 0;
}
#endif
注意strncpy的第三个参数控制大小
char * strncpy(char *s1,const char*2,size_t n); 该函数把s2指向的字符串复制到s1指向的位置,复制的字符数不超过n个。返回值是s1。空字符后的字符不被复制。如果源字符串的字符数少于n个,在目标串中就以空字符填充。如果源字符串的字符数大于或等于n个,空字符就不被复制。返回值是s1.
//用C++语言实现将一个字符串插入到另一个字符串的指定位置,最好用指针指向字符串来实现?
#include<iostream>
#include <string.h>
int main()
{
using namespace std;
char str1[] = "11111111 ";
printf("%s\n",str1);
char * name = "tom";
strncpy(str1+3,name,strlen(name));
printf("%s\n",str1);
/************************************************************************/
/* 结果 */
/* 11111111 */
/* 111tom11 */
/************************************************************************/
return 0;
}
#endif
注意strncpy的第三个参数控制大小
char * strncpy(char *s1,const char*2,size_t n); 该函数把s2指向的字符串复制到s1指向的位置,复制的字符数不超过n个。返回值是s1。空字符后的字符不被复制。如果源字符串的字符数少于n个,在目标串中就以空字符填充。如果源字符串的字符数大于或等于n个,空字符就不被复制。返回值是s1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询