2011-11-01 47 views
3

我正在审查库函数strcpy的可能实现方法。它是:strcpy:执行方法

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

这怎么可能没有的'\0'检查工作吗?

+0

如果* src ==“\ 0”它会结束时。不是吗? – lc2817

+1

您将变量切换为正确的,但对于标准库,参数应该按照'dest,src'的顺序。这就是他们为'strcpy','strcat','memcpy','memmove'等做的。 –

+1

另外,你应该使'src'成为'const char *'来表示它不会被写入。 –

回答

6

*dest++ = *src++的结果是*src的值在src的增量之前。如果此值为\0,则循环终止。

+0

Ya正确...更改了..谢谢 –