c - 使用指针的字符串连接中的段错误

标签 c string pointers

我试图连接存储在字符指针中的两个字符串,但我做错了。有人可以指出它是什么吗?另外,我没有特意使用任何内置函数。

int main()
{
    char *a = "abc";
    char *b = "def";
    char *c;

    while(*a != '\0')
    {
        *c = *a;
        a++;
        c++;
    }

    while(*b != '\0')
    {
        *c = *b;
        b++;
        c++;
    }

    *c = '\0';
    c -= 6;

    while(*c!= '\0')
    {
        printf("%c", *c);
        c++;
    }

    return 0;

最佳答案

你还没有为c分配任何内存

bc 获取静态分配的内存,当您这样做时:

char *a = "abc";
char *b = "def";

但 c 没有,所以你需要使用类似的方法分配内存:

char *c = malloc (x);

其中 x 是您需要容纳要插入的字符的字符数组的总长度(加 1,用于终止 NULL)。您还需要记住在行的某处free ()它。

因为你没有做任何分配,这一行:

*c = *a;

会产生未定义的行为。

关于c - 使用指针的字符串连接中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773628/

相关文章:

c - 如何从文件中读取数字并测量所需时间?

java - 在 Java 中驻留所有字符串对性能有何影响?

c - 是什么名字?

javascript - 在没有 JavaScript 的情况下从 URL 获取文件名

c++ - 指向 const 的指针 指向 int 的指针

c - 在 C 中进行类型转换的宏,详细学习 offsetof

c - 在 MinGW 中构建最小 DLL?

c - 我的数组正在被相同的值覆盖?

通过指针将数组转换为二维数组

c++ - 如何删除抽象类中类似的 const 和非 const 成员函数之间的代码重复?