首页 > 解决方案 > 线程 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

解决方案


在 c 中,像“HallO”这样的字符串文字存储在全局只读内存中。如果要修改字符串,则需要将其保存在堆栈的缓冲区中。

  char text[6] = "HallO";

推荐阅读