例如,假设我想将字符串“str1”复制到新字符串“str2”:
void function(const char* str1){
char* str2;
str2 = (char *) malloc(sizeof(char) * (strlen(str1) + 1));
strcpy(str2, str1);
...
}
malloc的参数应该是:
sizeof(char) * (strlen(str1)+1)
或只是:
sizeof(char) * strlen(str1)
答案 0 :(得分:6)
是的,您需要+1 - strlen
返回字符串长度;存储一个字符串,你需要存储它的长度加上NULL
终结符的额外位置。
话虽如此,在这个具体的例子中(我确信这只是一个例子),你可以使用strdup
。
答案 1 :(得分:1)
strcpy()函数复制包含终止“\ 0”字符的字符串,因此您需要+1。
答案 2 :(得分:1)
是的,当然你必须考虑'\ 0'。所以:
strlen(str1)+1U
是你想要的。在这种情况下,请考虑strdup
。
答案 3 :(得分:0)
您可以使用malloc()
代替使用calloc()
,而{{1}}会自动为您终止。