【发布时间】:2013-01-06 18:00:06
【问题描述】:
所以,我在 C 中看到了这个 strcpy 实现:
void strcpy1(char dest[], const char source[])
{
int i = 0;
while (1)
{
dest[i] = source[i];
if (dest[i] == '\0')
{
break;
}
i++;
}
}
对我来说,它甚至将\0 从源复制到目标。
我也看过这个版本:
// Move the assignment into the test
void strcpy2(char dest[], const char source[])
{
int i = 0;
while ((dest[i] = source[i]) != '\0')
{
i++;
}
}
这对我来说,在尝试将 \0 从 source 分配到 dest 时会中断。
正确的选择是什么,是否复制\0?
【问题讨论】:
-
复制空终止符是正确的。两个版本都这样做。
-
当
while在\0上中断时,复制已经由dest[i] = source[i]完成。 -
@simonc - 您的评论将是正确答案
-
'\0'表示字符串的结尾,它应该在那里,否则你将不知道你的字符串在哪里结束。