我尝试将一个数组项设置为特定值。程序已编译但在执行时返回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);
}
提前感谢您的帮助!
答案 0 :(得分:0)
unsigned char* str
这里str是只读的,你试图写到这个位置因此分段错误。
有阵列
unsigned char str[100] = "DEBUG: message: x\r\n";
并将此数组传递给函数。
答案 1 :(得分:0)
您尝试修改const对象(字符串)。这就是为什么你必须首先将字符串转换为unsigned char *的原因。 要解决此问题,您必须先将该字符串复制到char数组中。