您好,
查看以下代码:
int main(int argc, char* argv[]){
char* a = "z.x.f.t.e.a";
char* b = ".";
updateStr(a,b);
return 0;
}
int updateStr(char str[], const char* delim) {
int i=0;
int wordsCounter = 0;
while (str[i] != '\0') {
if (contains(delim,str[i])) {
printf("CONTAINED %c\n",str[i]); //debug
str[i] = SEPERATOR;
wordsCounter++;
}
i++;
}
//REST OF THE CODE....
return wordsCounter;
}
updateStr替换每个'。'与';' (分隔符)。但是,行str [i] = SEPERATOR; 抛出分段错误,我不知道为什么。是什么原因,我该如何解决?
谢谢大家
答案 0 :(得分:2)
char *a = "blah";
声明指向字符串文字的指针。这些不能改变(好吧,结果是未定义的)。您可能想要尝试char a[] = "blah";
,因为这会为您提供一个字符数组。
答案 1 :(得分:1)
不要尝试修改字符串常量。改为使用数组。
char[] a = "z.x.f.t.e.a";
等
答案 2 :(得分:1)
a
是指向字符串文字的指针(您无法修改)。改变它的定义。
int main(int argc, char* argv[]){
char a[] = "z.x.f.t.e.a"; /* will be on the stack */
char* b = ".";
updateStr(a,b);
return 0;
}