gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:02 24 4
gpt4 key购买 nike

我有两个问题..

  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,目标是第一个参数。

关于c - 如何在没有任何错误的情况下将文本稳健地复制到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com