C: 复制一个 char *指针到另一个

标签 c arrays string pointers

我在使用简单的复制功能时遇到了一些麻烦:

void string_copy(char *from, char *to) {

    while ((*to++ = *from++) != '\0')
        ;
}

它需要两个指向字符串的指针作为参数,它看起来不错但是当我尝试它时我有这个错误:

Segmentation fault: 11

这是完整的代码:

#include <stdio.h>

void string_copy(char *from, char *to);

int main() {
    char *from = "Hallo world!";
    char *to;
    string_copy(from,to);
    return 0;
}

谢谢大家

最佳答案

您的问题出在副本的目的地:它是一个尚未初始化的 char*。当您尝试将 C 字符串复制到其中时,会出现未定义的行为。

需要初始化指针

char *to = malloc(100);

或者改成一个字符数组:

char to[100];

如果您决定使用 malloc,您需要在完成复制的字符串后调用 free(to)

关于C: 复制一个 char *指针到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35252719/

相关文章:

c - 如何在 OS X Mavericks 上使用 Clang 设置自定义 C 入口点?

javascript - 单击按钮时显示 2 个组件中的 1 个

java - 从 XML 文件中获取子字符串

java - 检查列表中的字符串是否可以通过连接同一列表中的元素形成

c - 如何测试 FILE*(指向结构的指针)(如果 == NULL)?

c - 你包含哪个头文件以在 linux 中的 c 中使用 bool 类型?

C#:使用 String.Split 方法在每一行拆分字符串列表?

使用数字作为大小创建整数 char 数组

c - 如何计算字符串中回文单词的数量?

C - 双字符数组解析 - 要解析的 int 似乎无缘无故地修改了自己