Can';t集C字符数组元素

Can';t集C字符数组元素,c,arrays,string,C,Arrays,String,我已尝试将其中一个数组项设置为特定值。程序已编译,但执行时返回SEGFULT 代码如下: #include <stdio.h> void Debug(unsigned char* str, char simbol, char size); int main() { Debug((unsigned char*)"DEBUG: message: x\r\n", 'e', 40); return(0); } //this function I try to replac

我已尝试将其中一个数组项设置为特定值。程序已编译,但执行时返回SEGFULT

代码如下:

#include <stdio.h>

void Debug(unsigned char* str, char simbol, char size);


int main() {

  Debug((unsigned char*)"DEBUG: message: x\r\n", 'e', 40);
  return(0);

}

//this function I try to replace all occurrences of x with simbol value 'e'

void Debug (unsigned char* str, char simbol, char size){
    char i;

    for (i = 0 ; i < size ; i++){
        if( str[i] == 'x' ){
            str[i] = simbol;
        }
    }
    printf ("%s\n",  str);
}
#包括
无效调试(无符号字符*str,字符simbol,字符大小);
int main(){
调试((无符号字符*)“调试:消息:x\r\n”,“e”,40);
返回(0);
}
//此函数尝试用simbol值“e”替换所有出现的x
无效调试(无符号字符*str,字符simbol,字符大小){
char i;
对于(i=0;i
提前感谢您的帮助

unsigned char* str
这里str是只读的,您正试图写入此位置,因此出现分段错误

有阵列

unsigned char str[100] = "DEBUG: message: x\r\n";

并将此数组传递给函数。

您尝试修改常量对象(字符串)。这就是为什么首先必须将字符串强制转换为unsigned char*。
要解决这个问题,必须先将该字符串复制到字符数组中。

#include#include void Debug(unsigned char*str,char simbol,char size);int main(){unsigned char*mumumu;mumu=malloc(sizeof(unsigned char)*40);mumu=“DEBUG:message:x\r\n”;DEBUG(mumumu,'e',40);return(0);}void DEBUG(unsigned char*str,char simbol,char size){int i;unsigned char*mumumumumumumumu2=malloc(sizeof(unsigned char)*)*40);strcpy(mumumumumumumumumumumu,str);for(i=0;i