所以我得到了这份作业来决定以下代码将要做什么(在纸上,而无需在计算机上进行测试)。
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吗?
答案是“不确定的行为”,任何事情都可能发生。 strcpy()
和strncpy()
的参数不得重叠。 —但是在这里,他们有。