Can';t集C字符数组元素
我已尝试将其中一个数组项设置为特定值。程序已编译,但执行时返回SEGFULT 代码如下: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
#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