删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)
2013-02-19 16:34
423 查看
题目:删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)
代码:
上述代码中需要注意的是函数调用的约束。
从代码中可以看到在函数内部并没有自己分配新的空间,同时也没有在参数列表中引用额外开辟的空间,所有的改变都是在原有字符串的基础上进行修改的,这个地方就需要注意了,因为字符串的声明有两种方法
//字符数组
char str[] = "Hello World!"另外一种是字符串常量
//字符串常量
char * str = "Hello World!"但是上述两个字符串有明显的区别,字符数组是字符串变量,可以调用上面的DelSpace()函数直接在变量空间上进行修改,但是字符串常量是一个常量,常量是不可修改的,因此如果声明的是字符串常量的话,调用上述删除空格函数会导致
Unhandled exception in hua.exe: 0xC0000005: Access Violation. 这主要是由于要修改字符串常量的错误造成。
因此如果不分配空间直接修改仅适用于字符串数组。而不能用于字符串常量。
代码:
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. 这主要是由于要修改字符串常量的错误造成。
因此如果不分配空间直接修改仅适用于字符串数组。而不能用于字符串常量。
相关文章推荐
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化(合并)为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个
- 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。
- 字符串 删除字符串开始以及末尾的空白符,并把数组中间的多个空格(如果有)符转换为1个
- 删除字符串开始及末尾的空格,并且把数组中间的多个空格转化为一个
- 面试题 删除字符串开始以及末尾的若干空格,并且把中间多个空格转化为一个
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:" i am a little boy.
- 删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 删除字符串开始和结尾空格,并将中间多个空格合并为一个空格
- [删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个