大神,问个问题,这段代码怎么不可以连接中文
c++吧
全部回复
仅看楼主
level 9
影圣天 楼主
#include<iostream>
using namespace std;
void mystrcat(char*a,char*b)
{
int t=sizeof (a);
for (int i=0;b[i]!='\0';i++)
{
a[t-1]=b[i];
t++;
}
a[t]='\0';
}
int main()
{
char a[]="hsuxneusnd";//若换成"还是多喝水"
char b[]="sjxneuxnejdj";//若换成"很多"
mystrcpy(a,b);
cout<<a;
}
为什么换成中文的就错了呢?@8826055
2015年12月27日 08点12分 1
level 1
[冷]错的离谱
2015年12月27日 08点12分 2
嗯,请问错在哪里了?
2015年12月27日 08点12分
@影圣天 [冷]首先sizeof(a)并不是字串长度,其次连接以后的字串大于a的长度造成覆盖无法预料结果
2015年12月27日 08点12分
@带你飞后Cm [啊]你聪明了,谢谢[真棒]
2015年12月27日 08点12分
level 11
中文字符占两个字节
2015年12月27日 08点12分 3
好像不是这个问题,我貌似知道了,因为无论a[]多大,在函数中t永远等于4,是吗?
2015年12月27日 08点12分
中文字符编码两个\0表示结束,所以sizeof求不出来
2015年12月27日 08点12分
回复 舞3481 :嗯,谢谢,不过我还想问一句,你是认同t表示的是a[]的字节大小吗?而且我也发现不是中文,错误同样存在
2015年12月27日 08点12分
@影圣天 看错了 sizeof可以求字节长度
2015年12月27日 08点12分
1