我有运行时错误,我不知道是什么原因。
void replace(char *str, char ch){
int i=0;
while(*(str+i) != '\0'){
if(*(str+i) == ' '){
*(str+i) = ch; // I doubt in this line
}
i++;
}
cout << str << "\t";
}
int main(){
replace("Hello World",'_');
return 0;
}
答案 0 :(得分:2)
"Hello world"
是字符串文字,即const char *
。你不能修改它。这甚至是如何编译的?它应该告诉您,不允许您将const char *
传递给带char *
的函数。
char myString[] = "Hello World!"
将创建一个char数组,它是字符串文字的副本。你可以随意修改它(前提是你没有写出界限)。
答案 1 :(得分:2)
您无法修改“Hello World”,它是一个常量的只读字符串。
它会更好地工作:
char s[] = "Hello World!";
replace(s, "_");
答案 2 :(得分:0)
这样可行: - 如上所述,str是常量,因此不能修改为: -
void replace(char *str, char ch){
int i=0;
char * strnew= new char[strlen(str) +1];
strcpy(strnew,str);
while(*(strnew+i) != '\0'){
if(*(strnew+i) == ' '){
*(strnew+i) = ch; // I doubt in this line
}
i++;
}
cout << strnew << "\t";
delete[] strnew;
}
int main()
{
replace("Hello World",'_');
getch();
return 0;
}