c语言删除字符串多余空格有关问题
c语言删除字符串多余空格问题初学c语言,想实现这么个功能:如果字符串有一个地方由一个或多个连续空格组成,
c语言删除字符串多余空格问题
初学c语言,想实现这么个功能:如果字符串有一个地方由一个或多个连续空格组成,就把它们改成单个空格字符。比如abc d输出成abc d。
#include <stdio.h>
#include <string.h>
void deblank(char string[])
{
int j=1;
for(int i=0;i<=strlen(string)-2;i++,j=i+1)
{
if(string[i]==' '&&string[j]==' ')
{
string[j]=string[++j];
}
}
puts(string);
}
int main()
{
deblank("abc d");
}
但是这段代码总是报错,好像和内存地址冲突有关,求点拨,怎么才能用数组实现这个功能呢?
[解决办法]
int main()
{
char str[]="abc d";
deblank(str);
}
多说一句,deblank函数达不到Lz的需求
[解决办法]http://zhidao.baidu.com/question/168113722.html
[解决办法]是的 先前传递的"abcd"是存放在文字常量区的,顾名思义,试图修改是不允许的
而用一个数组 str[]则是在栈内存放的,允许修改
同理 char *str="abc"是一个执行常量的指针,故同样不能修改str指向内存的内容