<分区>
我尝试使用strcpy
;这是这样做的好方法吗?
char *stringvar;
stringvar = malloc(strlen("mi string") + 1);
strcpy(stringvar, "mi string");
stringvar[strlen("mi string")] = '\0';
你怎么看?
<分区>
我尝试使用strcpy
;这是这样做的好方法吗?
char *stringvar;
stringvar = malloc(strlen("mi string") + 1);
strcpy(stringvar, "mi string");
stringvar[strlen("mi string")] = '\0';
你怎么看?
最佳答案
其中只有一个错误:您没有检查 malloc-failure。
除此之外,它是重复的并且容易出错。
而且用终结符覆盖终结符也没用。
此外,重复重新计算字符串长度是昂贵的。
无论如何,因为您已经必须确定长度,所以更喜欢 memcpy()
在 strcpy()
.
你应该做的是将它提取到一个函数中,我们称它为strdup()
。 (这是 POSIX 和下一个 C 标准给它的名称):
char* strdup(const char* s) {
size_t n = strlen(s) + 1;
char* r = malloc(n);
if (r)
memcpy(r, s, n);
return r;
}
char* stringvar = strdup("mi string");
if (!stringvar)
handle_error();
关于c - 这是使用 strcpy 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57347298/