c++如何合并字符数组char*而且不影响到合并之前的字符串
AB两个字符串,在c++中合并后,AB两个都是合并后的结果,我想通过复制来解决,使用strcpy把A复制给C,但是实际上是把A的指针给了C,对A改变了C也跟着改变了,怎么...
AB两个字符串,在c++中合并后,AB两个都是合并后的结果,我想通过复制来解决,使用strcpy把A复制给C,但是实际上是把A的指针给了C,对A改变了C也跟着改变了,怎么解决呢?我想要的效果是有个字符串A,我要用他多次,第一次和一个字符串合并成B,第二次和另一个字符串合并成C,实际效果是第二次合并的时候的A其实已经变成和B合并后的字符串了
展开
展开全部
#include <iostream>
using namespace std;
void CreateNewStr(const char *src1, const char *src2, char *dest);
int main()
{
char *a = "aaa";
char *b = "bbb";
char *c = "ccc";
//计算新字符串的字节数:3+3+1,1是指字符串结束符\0
int newStrLen = strlen(a) + strlen(b) + 1;
char *ab = (char *)malloc(sizeof(char) * newStrLen);
CreateNewStr(a, b, ab);
cout<<ab<<endl;
newStrLen = strlen(ab) + strlen(c) + 1;
char *abc = (char *)malloc(sizeof(char) * newStrLen);
CreateNewStr(ab, c, abc);
cout<<abc<<endl;
free(abc);
abc = NULL;
free(ab);
ab = NULL;
system("pause");
return 0;
}
void CreateNewStr(const char *src1, const char *src2, char *dest)
{
while(*src1 != '\0')
{
*dest = *src1;
src1++;
dest++;
}
while(*src2 != '\0')
{
*dest = *src2;
src2++;
dest++;
}
*dest = '\0';
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
chat tmp[] = "tstr"; // 原串
char astr[60]; //
char bstr[60] = "bstr";
char cstr[60] = "cstr";
strcpy(astr,tmp); // 获取原串备份
strcat(astr,cstr); // 串拼接,astr变了,但tmp未变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
char a[100]="aaaaaaa";
char b[100]="bbbbbbb";
char c[100]="ccccccc";
char temp[100];
strcpy(temp,a);
strcat(temp,b);
cout<<temp<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这问题 说的 糊里糊涂的
strcpy 是字符串的复制
strcpy(B,A);把A复制给B
strcpy(C,A);;把A复制给C
而strcat是字符串拼接
strcat(A,B)就是把b连接到A后面
strcpy 是字符串的复制
strcpy(B,A);把A复制给B
strcpy(C,A);;把A复制给C
而strcat是字符串拼接
strcat(A,B)就是把b连接到A后面
追问
追问不让发代码,一发就说字数多了,代码都发不了,缩减一下如下。。。。
fp="male";
char* i= strcpy(i,fp);
imagejson = std::strcat(i, "_image.json");
char* a= strcpy(a,fp);
actionjson = std::strcat(a, "_action.json");
你给fp赋值然后调试就懂我的意思了
追问字数完了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询