首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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


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

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

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

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

热点排行