C-如何在没有任何错误的情况下将文本强稳定地复制到char*



我有2个问题..

  1. 使用char *string执行以下命令时,是否有必要添加终止字符?

    strcpy();

    strncpy();

  2. 是否有必要在对上述操作进行任何操作之前先分配内存以针对char *string

例如..

char *str;
str = malloc(strlen(texttocopy));
strcpy(texttocopy, str); // see the below edit

请解释。

编辑:在上面的代码中,我倒了参数。这只是我在这里提出问题时做的错字。正确的方法应该是

strcpy(str, texttocopy); // :)

strcpy函数始终添加终结器,但在某些情况下strncpy可能不会这样做。

对于第二个问题,是的,您需要确保为目的地分配足够的内存。在您的示例中,您的未分配足够的内存,并且将具有缓冲区溢出。请记住,strlen返回字符串的长度,而无需计算终结器。您还将参数倒向 strcpy,目的地是 first 参数。

  1. 'strcpy'函数将数据从源地址(包括' 0'终止字符)复制。'strncpy'函数以相同的方式将数据复制为相同的方式,但是如果没有终止字符 0'在要复制的第一个n字节中,则不会复制终止字符,您将需要自己添加它以终止字符串。

  2. 您将始终必须在静态或动态上分配记忆空间以进行播放。因此,您应该先声明一个字符数组或动态分配大量内存,然后您可以使用字符串

  3. 来播放不错

相关内容

  • 没有找到相关文章

最新更新