将 C 字符串逐个字符复制到动态 char*

标签 c c-strings

我有一个 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/

相关文章:

c - PIC 和 XC8 编译器问题

c - 扫描字符串中的字符串

c - return (a || b) 实用程序?

c - 与之前 fork 的子进程共享一个套接字

C 字符串数组 strtok()

c++ - C++ 中的电子邮件验证

c - strcpy 将随机数添加到空字符串

c++ - C++中结构数组的初始化

arrays - 在 C 的 while 循环中迭代 *str 与 str[]

c - 使用 malloc 时遇到问题