首页 > 解决方案 > 将字符数组复制到函数外部的字符串

问题描述

我正在尝试实现一个函数 upperCase 接受一个字符串并将任何字符大写而不返回额外的字符串。运行下面的代码,当 memcpy 命令运行时,我得到“分段错误(核心转储)”。我是否错误地使用了 memcpy?

注释掉的 printArrChar 只是循环遍历数组并输出它的值,它从 charArray 输出预期的字母。

void upperCase(const char *s){
    int i=0;
    size_t len = strlen(s)+1;
    char charArray[len];
    while (*(s+i) != '\0'){
        if (*s >=97 && *s <= 122){
            charArray[i] = *(s+i) -32;
        }
        else
        {
            charArray[i] = *(s+i);
        }
        i++;
    }
    charArray[len-1] = '\0';
    // printArrChar(charArray, sizeof(charArray)/sizeof(charArray[0]));
    memcpy(s, &charArray, len);
}

编辑:上下文的完整代码。https://pastebin.com/Hf7HH5yu

我意识到我在声明我的函数采用 const 但给它一个非常量数组时犯了一个错误,但删除 const 似乎并不能解决错误。

标签: c

解决方案


推荐阅读