C中字符串末尾的两个空终止符

问题描述 投票:0回答:1

我正在通过“ 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)那么,我是否应该为此担心?如果是的话,这件事发生的原因是什么?

c arrays string pointers null-terminated
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.