使用指针执行“strcat()”的操作

时间:2014-07-23 12:46:17

标签: c string pointers gcc

我使用指针执行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[]在输出中被修剪。

问题: 为什么会出现这种情况?

0 个答案:

没有答案