字符串中指针赋值问题

#include
#include
int main()
{//找出字符串中的空格,并将其删除
char* str = "in ter e st ing";
int i = 0;
while (*(str+i) != '\0')
{
if (*(str + i) == ' ')
{
int a = i;
while (*(str + a) != '\0')
{
*(str + a) = *(str + a + 1);??在这一行 调试老是显示中断...
a++;
}
}
i++;
}
printf("%s\n", str);
return 0;
}

在C/C++不能存在像这种赋值方式吗?

2个回答

因为你的字符串是存储在常量区的,是不可变的,所以会出错
你应该把字符串存储在栈空间上,比如用数字存储,就可以了,还有,要重新定义一个指针向后移动,不然在最后输出的时候只输出了‘\0’结果就会不正确

diannaoxiaobi
嵌入式-鱼 回复Cedric_zou: 用字符串储存数据,再把指针指向字符串
2 年多之前 回复
Cedric_zou
Cedric_zou 哦哦,我明白了。谢谢!int abc = strlen("in ter e st ing"); char* str = (char*)malloc(abc + 1); gets_s(str, abc + 1);
2 年多之前 回复
Cedric_zou
Cedric_zou 这个没必要用数据结构吧,栈空间不太熟练....
2 年多之前 回复

因为你的字符串是存储在常量区的,是不可变的,所以会出错
你应该把字符串存储在栈空间上,比如用数组存储,就可以了,还有,要重新定义一个指针向后移动,不然在最后输出的时候只输出了‘\0’结果就会不正确

越界了

试试
while (*(str + a) != '\0' && (a+1)<strlen(str))

Cedric_zou
Cedric_zou 不是越界的问题哦,试过了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐