我有一个 const char*
字符串,我想将该字符串逐字符复制到动态 `char*。
const char *constStr = "Hello world";
char *str = (char*) malloc(strlen(constStr)+1);
while(*constStr){
*str = *constStr;
constStr++;
str++;
}
printf("%s", str);
free(str);
问题是之前的代码只是将 constStr
的每个字符复制到 str
的第一个索引。不知道为什么?
最佳答案
正如其他人所指出的,您在每次迭代中都会递增 str
指针,因此您总是最终打印字符串的末尾。
您可以迭代每个字符而不增加指针。以下代码对我有用:
const char *constStr = "Hello world";
int len = strlen(constStr);
char *str = (char *) malloc(len + 1);
int i;
for (i = 0; i <= len; ++i) {
str[i] = constStr[i];
}
printf("%s", str);
free(str);
关于将 C 字符串逐个字符复制到动态 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48555221/