c中的自定义“strcpy”函数

时间:2013-11-25 06:12:49

标签: c

此方法可以将内容从1个字符串复制到另一个字符串。 我的问题是当它到达字符串末尾时它是如何停止的?怎么知道什么时候停止?

void strcpy2(char *s, char *t)
{
  while (*s++ = *t++)
    ;
}

4 个答案:

答案 0 :(得分:6)

它停止,因为*s的计算结果为0.

也就是说,复制的最后一个字符是\0(字符串终结符)。

评估为0是在C中表示布尔值false的方式,因此当发生这种情况时循环退出。

答案 1 :(得分:3)

您的代码相当于。

void strcpy2(char *s, char *t) {

       while (*t) {
         *s = *t;
          s++;
          t++;
         }
        *s = *t;
     }

当t指向的char为'\ 0'时,while循环将终止 在此之前,它会将指向的字符串复制到s指向的字符,然后将s和t递增以指向其数组中的下一个字符。

答案 2 :(得分:2)

c中的

字符串后跟'\0'个字符。这应该是源字符串的终止条件。这可能就像:

void strcpy2(char *s, char *t)
{
  while (*s !='\0')
    {
       *(t) = *(s);
       s++;
       t++;
    }
    *t = '\0';
}

注意:应为t分配足够的内存,否则会出现分段错误。

答案 3 :(得分:1)

在C中,字符串的结尾标有NULL终结符\0,即值为0。

在C中,任何非零值都被认为是真实的& 0是假的。

当达到字符串结尾时,while循环在条件&中看到0。因此,退出。