您的位置:首页 > 其它

删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)

2013-02-19 16:34 423 查看
题目:删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)

代码:

void DelSpace(char *s)
{
if(s == NULL)
return;
int flag = 0 ;
if(*s == ' ')
flag = 1;
char *p = s;
int j = 0;
while(*p != '\0')
{
if(*p != ' ')
s[j++] = *p;
else
{
while(*p == ' ')
p++;
if(flag==1 || *p=='\0')
flag = 0;
else
s[j++] = ' ';
p--;
}
p++;
}
s[j] = '\0';

}

上述代码中需要注意的是函数调用的约束。

从代码中可以看到在函数内部并没有自己分配新的空间,同时也没有在参数列表中引用额外开辟的空间,所有的改变都是在原有字符串的基础上进行修改的,这个地方就需要注意了,因为字符串的声明有两种方法

//字符数组
char str[] = "Hello World!"另外一种是字符串常量
//字符串常量
char * str = "Hello World!"但是上述两个字符串有明显的区别,字符数组是字符串变量,可以调用上面的DelSpace()函数直接在变量空间上进行修改,但是字符串常量是一个常量,常量是不可修改的,因此如果声明的是字符串常量的话,调用上述删除空格函数会导致
Unhandled exception in hua.exe: 0xC0000005: Access Violation. 这主要是由于要修改字符串常量的错误造成。

因此如果不分配空间直接修改仅适用于字符串数组。而不能用于字符串常量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string
相关文章推荐