在C编程中:当为新字符串mallocing空间时,是否需要考虑'\ 0'(空终止符)

sic*_*ans 3 c malloc

例如,假设我想将字符串"str1"复制到新字符串"str2":

void function(const char* str1){
    char* str2;
    str2 = (char *) malloc(sizeof(char) * (strlen(str1) + 1));
    strcpy(str2, str1);
    ...
}
Run Code Online (Sandbox Code Playgroud)

malloc的参数应该是:

sizeof(char) * (strlen(str1)+1)
Run Code Online (Sandbox Code Playgroud)

要不就:

sizeof(char) * strlen(str1)
Run Code Online (Sandbox Code Playgroud)

Tom*_*mmy 6

是的,你需要+1 - strlen返回字符串长度; 存储一个字符串,你需要存储它的长度加上一个额外的NULL终结点.

话虽这么说,在这个具体的例子中(我确信这只是一个例子来说明这一点),你可以使用strdup.