我使用指针执行strcat()
的操作。
Practice.c
#include <stdio.h>
int main(void)
{
char src[]="Hello";
char tgt[]="Ladies";
xstrcat(src,tgt); // LINE 1.
printf("\nTGT[] = %s\nSRC[] = %s",tgt,src);
return 0;
}
xstrcat(char *t, const char *s)
{
while(*t!='\0')
++t;
while(*s!='\0')
{
*t=*s;
++t;++s;
}
}
输出
TGT[] = Ladies
SRC[] = HelloLadies
现在,只要我用xstrcat(src,tgt);
检查xstrcat(tgt,src)
替换LINE 1.
,程序的输出也会发生变化。
新输出
TGT[] = LadiesHelloo
SRC[] = elloo
您可以清楚地看到输出不符合要求。重复o
并修剪H
。
我首先怀疑我的xstrcat(char *t, char *s)
功能。所以我使用了默认的strcat()
函数:
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[]="There";
char tgt[]="Go";
strcat(src,tgt); //LINE 2
printf("\nTGT[] = %s\nSRC = %s",tgt,src);
}
按预期输出
TGT[] = Go
SRC[] = ThereGo
现在,当我在strcat(src,tgt)
中使用srtcat(tgt,src)
替换LINE 2
时,输出如下:
TGT[] = GoThere
SRC[] = here
你知道,T
中的src[]
在输出中被修剪。
问题: 为什么会出现这种情况?