首页 > 解决方案 > 如何在没有内部函数的C中复制char数组

问题描述

这是我的代码

char function(char *dst)
{
    int i;
    char *arr;

    i = 0;
    while(dst[i] != '\0')
    {
        arr[i] = dst[i];
        i++;
    }
    dst[i] != '\0'
    return(arr);
}

int main(void)
{
    char a[] ="asdf"
    printf("%s", function(a);
}

我想复制*dst到空*arr,但我的代码不起作用。我无法理解。如何在 C 中复制没有内部函数的数组(ex_strcpy,memspy ....)谢谢

标签: arraysc

解决方案


除了丢失;并确保string传递给函数的内容始终是'\0'终止的(否则程序将遇到副作用strcpy)。并返回char*而不是 char,您错过了为arr

// return char * instead of char
char* function(char *dst)
{
    // Note - sizeof(dst) wont work
    // Neither does sizeof(dst)/sizeof(char)
    // allocate one extra for '\0'
    size_t size_to_alloc = (strlen(dst) + 1) * (sizeof *arr);
    char *arr = malloc( size_to_alloc  );
    char *p = arr;
    for ( ; *dst ; p++, dst++)
         *p = *dst;
    *p = '\0';
    return(arr);
} 

推荐阅读