c - 线程 1 exc_bad_access(代码=1 地址=0x0)
问题描述
我正在做一个项目,我必须替换字符串中的一些字符。我不明白我看到的错误之一。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void replaceLetters(char *text, char original, char new_char);
{
for (int counter = 0; text[counter] != '\0'; counter++)
{
if (text[counter] == original)//Error occurs here
{
text[counter] = new_char;
}
printf("%c", chr[counter]);
}
return 0;
}
int main()
{
char *text = "HallO";
char original = 'O';
char new_char = 'N';
replaceLetters(text, original, new_char);
return 0;
}
在if
语句中发生以下错误:thread 1 exc_bad_access (code=1 address=0x0)
。这是什么意思,我该如何解决?
解决方案
在 c 中,像“HallO”这样的字符串文字存储在全局只读内存中。如果要修改字符串,则需要将其保存在堆栈的缓冲区中。
char text[6] = "HallO";
推荐阅读
- mysql - 如何选择包含多个标签的 id?
- c# - 为什么我们在c#中进行模式匹配时要声明一个额外的变量
- java - 如何设置 drawable.setBounds 方法的高度和宽度,以便在 textview 中完美地在不同设备中正确显示图像
- graphql - Graphql:有没有办法用架构上未声明的新字段更新查询?
- powershell - $host.UI.RawUI.MaxPhysicalWindowSize 与 $host.UI.RawUI.MaxWindowSize 有什么区别
- ruby-on-rails - 图片在第一次访问时不显示,但在控制台上点击检查时显示
- angular - 在将 gmail 与 ionic 3 集成时面临问题,出现运行时错误 >>Object(...) 不是函数
- javascript - 如何用jQuery中的所有子元素克隆父元素?
- php - 哪个mysql插入更快
- puppet - 木偶代理无法识别 r10k 拉取模块