c - 尝试在 C 函数中复制字符串时出现段错误

标签 c segmentation-fault strcpy

我在“C”中有一个函数应该实现我自己的 strcpy 程序。这是我写的。但是,我无法调试 Segmentation Fault 的原因。

#include <stdio.h>
#include <stdlib.h>

char * mystrcpy(char *dest, char *src) {
    char * ptr = dest;
    while (*src != '\0'){
        *ptr = *src;
        ptr++; src++;
        //printf("Dest is \"%s\" and Source is \"%s\"\n",dest,src);
    }
    *ptr = '\0';
    return dest;
}


int main() {
    char str[] = "I rock always";
    char * dest = NULL;
    dest = mystrcpy(dest, str);
    printf("Source String %s and Destination String %s\n", str, dest);
}

有人可以向我解释这种行为吗?

最佳答案

您必须为目标字符串分配内存:

int main() {
    char str[] = "I rock always";
    char * dest = (char*)malloc(strlen(str) + 1);
    dest = mystrcpy(dest, str);
    printf("Source String %s and Destination String %s\n", str, dest);
}

当然,最终释放内存是有礼貌的:

    free(dest);

关于c - 尝试在 C 函数中复制字符串时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176416/

相关文章:

c++ - 这段代码的输出是什么,它在构造函数中使用了 strcpy?

c++ - 在 c++/c 中利用所有 4 个内核

c++ - 段错误,列出目录的内容

c++ - 为什么这个 C++ 代码片段段错误?

objective-c - memcpy 会正确复制字符串吗?

c - 为什么 strcpy 上没有段错误?

c - 如何动态填充指向我创建的结构的指针数组?

c - 将共享库链接到静态库

c - 为什么我的代码在加密第二个单词后插入了 3 个空格?

Python Tesseract 段错误 11