strcpy:实现方法

3

我正在研究库函数strcpy的可能实现方法。它是:

void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
            ;
}

这怎么可能没有检查 '\0' 而正常工作呢?

如果 *src == "\0",它就会结束 while 循环。不是吗? - lc2817
1
你已经把变量改对了,但是标准库的参数顺序应该是“dest, src”。这就是他们在strcpystrcatmemcpymemmove等函数中的做法。 - Chris Lutz
1
另外,您应该将 src 声明为 const char *,以表示它不会被写入。 - Chris Lutz
1个回答

6
< p > *dest++ = *src++ 的结果是在 src 加 1 前的 *src 值。如果这个值是 \0,循环就会终止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接