读书人

c语言删除字符串多余空格有关问题

发布时间: 2014-01-12 00:03:16 作者: rapoo

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
[解决办法]
引用:
Quote: 引用:


int main()
{
char str[]="abc d";
deblank(str);
}

多说一句,deblank函数达不到Lz的需求

能给解释一下为什么这样就没有那个内存错误了吗?我那种写法传递的是字符串常量?

是的 先前传递的"abcd"是存放在文字常量区的,顾名思义,试图修改是不允许的
而用一个数组 str[]则是在栈内存放的,允许修改
同理 char *str="abc"是一个执行常量的指针,故同样不能修改str指向内存的内容

读书人网 >C语言

热点推荐