c - 将字符数组复制到函数外部的字符串
问题描述
我正在尝试实现一个函数 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 似乎并不能解决错误。
解决方案
推荐阅读
- python - 使用 pytorch python 的欠采样和过采样的不平衡分类
- sql - 无法将 int 值添加到时间戳
- sqlite - Xamarin Forms UWP 中的非托管内存不断增加
- python - 如何比较两个日期之间的差异并以小时为单位?
- mongodb - 使用另一个字段查询嵌套数组
- excel - 即使没有执行 Excel VBA 代码也会影响屏幕... - 需要帮助
- sql - ORACLE - 从文本字段中删除换行符
- reactjs - 禁止创建 React 元素
- thingsboard - Thinkboard 停止处理消息 - 异常
- html - 为什么我的媒体查询会互相“踩踏”?