c语⾔删除字符串的空格函数,C语⾔去除空⽩字符trim函数的⾼
效实现
看了终南写的⼀⽂,觉得还是有些需要改进之处。
空⽩字符指空格、⽔平制表、垂直制表、换页、回车和换⾏符,他的⽅法如下:
#include
#include
char *trim(char *str)
{
char *p = str;
char *p1;
trim函数的作用是删除文本的什么空格if(p)
{
p1 = p + strlen(str) - 1;
while(*p && isspace(*p)) p++;
while(p1 > p && isspace(*p1)) *p1-- = '/0';
}
return p;
}
如这⾥⾯有2处“不科学”之处:
1,while(p1 > p && isspace(*p1)),如果右边空⽩⽐较多,那么每次都要⽐较p1和p的⼤⼩,不合理;
2,*p1 -- = '/0'每次while为真,那么*p1⾃减之后还要赋值⼀次,多此⼀举;
⽐较⾼效的⽅法如下:
char *trim(char *str)
{
char *p = str;
while (*p == ' ' || *p == '/t' || *p == '/r' || *p == '/n')
p ++;
str = p;
p = str + strlen(str) - 1;
while (*p == ' ' || *p == '/t' || *p == '/r' || *p == '/n')
-- p;
*(p + 1) = 0;
return str;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。