3
我正在审查库函数strcpy
的可能实现方法。它是:strcpy:执行方法
void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
;
}
这怎么可能没有的'\0'
检查工作吗?
我正在审查库函数strcpy
的可能实现方法。它是:strcpy:执行方法
void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
;
}
这怎么可能没有的'\0'
检查工作吗?
*dest++ = *src++
的结果是*src
的值在src
的增量之前。如果此值为\0
,则循环终止。
Ya正确...更改了..谢谢 –
如果* src ==“\ 0”它会结束时。不是吗? – lc2817
您将变量切换为正确的,但对于标准库,参数应该按照'dest,src'的顺序。这就是他们为'strcpy','strcat','memcpy','memmove'等做的。 –
另外,你应该使'src'成为'const char *'来表示它不会被写入。 –