- 论坛徽章:
- 2
|
本帖最后由 damcool 于 2011-01-25 18:41 编辑
- void trim(char * str)
- {
- char * header,*tail;
- if (str==NULL) return;
- header=str;
- tail=str+strlen(str);
- while ((header<tail) && ((*header<=32)||(*tail<=32)))
- {
- if (*header<=32) *header++=0;
- if (*tail<=32) *tail--=0;
- }
- while (*header>0)
- {
- *str++=*header++;
- }
- *str=0;
- }
复制代码 版本二:不用strlen- void trim(char * str)
- {
- char * header,*tail;
- if (str==NULL) return;
- header=str;
- tail=NULL;
- while ((*header>0) && (*header<=32))
- {
- header++;
- }
- while (*header>0)
- {
- if (*header>32) tail=header;
- *str++=*header++;
- }
- if (tail!=NULL) str-=--header-tail;
- *str=0;
- }
复制代码 版本三,不用strlen,只用单循环。- void trim(char * str)
- {
- char * header,*tail;
- if (str==NULL) return;
- header=str;
- tail=NULL;
- while (*header>0)
- {
- if (*header>32) tail=header;
- if (tail!=NULL) *str++=*header++;
- else header++;
- }
- if (tail!=NULL) str-=--header-tail;
- *str=0;
- }
复制代码 版本四,应对超长空白在末端的情况。- void trim(char * str)
- {
- char * nowPos,*lastPos;
- if (str==NULL) return;
- nowPos=str;
- lastPos=NULL;
- while (*nowPos>0)
- {
- //上次停止复制处到目前非空白字符间的字符进行复制
- if ((*nowPos>32) && (lastPos!=NULL))
- {
- while(lastPos<=nowPos)
- *str++=*lastPos++;
- }
- //左边空白处理结束,记住第一个非空白字符位置
- if ((*nowPos>32) && (lastPos==NULL))
- lastPos=nowPos;
- nowPos++;
- }
- *str=0;
- }
复制代码 |
|