[英]Removing spaces from a string in C Memory fault
我正在编写一个简单的代码以从C中的字符串中删除空格,但是编译后得到以下消息:EXC_BAD_ACCESS(代码= 2,地址= ....)。 它来自“ * temp = * str”行,但是我不明白为什么? 我该如何解决?
void removeSpaces(char * str)
{
char * temp = str;
while (*str != '\0') {
if (*str != ' ') {
*temp = *str;
temp++;
}
str++;
}
*temp = '\0';
}
传递这样声明的字符串时,该函数可以正常工作
char s[] = "Hallo World!";
但是如果您这样声明字符串,则作为指向字符串文字的指针
char *s = "Hallo World!";
您不应该修改字符串。
似乎您正在传递字符串文字。 temp
和str
指向相同的字符串文字。 用语句*temp = *str;
您正在修改不应修改的文字。
要解决此问题,请为temp
内存分配
char *temp = malloc(strlen(str) + 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.