我正在通过“ The C Programming Language”这本书学习C。在其中一个需要连接两个字符串的练习中,我发现在结果字符串的末尾有两个空终止符(\ 0)。这正常吗?
该功能的代码:
void
copy_str_to_end(char *target, char *destination)
{
while (*destination != '\0')
++destination;
while ((*destination++ = *target++) != '\0')
;
}
输出:This is a destination. This is a target.
这似乎一切正常,但是如果我运行此功能进行测试:
void
prcesc(char *arr)
{
int i;
for (i = 0; i <= strlen(arr) + 1; i++)
if (arr[i] != '\0')
printf("%c", arr[i]);
else
printf("E");
printf("\n");
}
问题变得显而易见:This is a destination. This is a target.EE
(E表示\ 0)那么,我是否应该为此担心?如果是的话,这件事发生的原因是什么?