无法设置C char数组元素

时间:2015-02-13 08:42:24

标签: c arrays string

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

以下是代码:

#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);
}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

unsigned char* str

这里str是只读的,你试图写到这个位置因此分段错误。

有阵列

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

并将此数组传递给函数。

答案 1 :(得分:0)

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