strcpy如何更改字符串的值

问题描述 投票:1回答:1

所以我得到了这份作业来决定以下代码将要做什么(在纸上,而无需在计算机上进行测试)。

char s1[]="Short Message Service", *s2, *s3;
s2=strchr(s1,'M');
s3=strrchr(s2,'S');
strncpy(s1+1,s2,1);
strcpy(s1+2,s3);

[当我想检查是否正确时,我在计算机上运行它并得到以下结果:

s1 = SMservice

s2 =冰

s3 =服务

我以为s2将是“消息服务”,但是它变成了“ ice”,显然在调用strcpy(s1+2,s3)之后它就发生了变化,有人可以解释为什么该功能以及如何影响s2吗?

c string strcpy
1个回答
2
投票

答案是“不确定的行为”,任何事情都可能发生。 strcpy()strncpy()的参数不得重叠。 —但是在这里,他们有。

© www.soinside.com 2019 - 2024. All rights reserved.