我正在编写一个简单的代码来从C中的字符串中删除空格但是我在编译后得到以下消息:EXC_BAD_ACCESS(code = 2,adresss = ....).它来自'*temp =*str'这一行然而我不明白为什么?我该如何解决?
void removeSpaces(char * str)
{
char * temp = str;
while (*str != '\0') {
if (*str != ' ') {
*temp = *str;
temp++;
}
str++;
}
*temp = '\0';
}
Run Code Online (Sandbox Code Playgroud)
传递一个像这样声明的字符串时,该函数工作正常
char s[] = "Hallo World!";
Run Code Online (Sandbox Code Playgroud)
但是如果你像这样声明了字符串,那就是指向字符串文字的指针
char *s = "Hallo World!";
Run Code Online (Sandbox Code Playgroud)
你不应该修改字符串.