免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bjf
打印 上一主题 下一主题

如何又简洁又安全地去掉字符串前面和后面的空符号?  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
21 [报告]
发表于 2003-12-25 14:08 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

trim的问题写了这么多代码,好啊!

老夫也写个
去左边

  1. char *lefttrim( char *str )
  2. {
  3. char *pstart, *ptr;

  4.     if ( str == NULL )
  5.         return NULL;

  6.     pstart = ptr = str;

  7.     while ( *( ( unsigned char * )ptr ) == 0x20 || *ptr == '\t' || \
  8.             *ptr == '\r' || *ptr == '\n' )
  9.         ptr ++;

  10.     while ( *ptr != 0x0 )
  11.         *str ++ = *ptr ++;

  12.     *str = 0x0;

  13.     return pstart;
  14. }

复制代码

去右别

  1. char *righttrim( char *str )
  2. {
  3.     char        *ptr;

  4.     if ( str == NULL )
  5.         return NULL;

  6.     ptr = str + strlen( str ) - 1;

  7.     while ( ptr >;= str && ( *( ( unsigned char * )ptr ) == 0x20 || \
  8.             *ptr == '\t' ||  *ptr == '\r' || *ptr == '\n' ))
  9.         *ptr -- = 0x0;

  10.     return str;
  11. }

复制代码


如法炮制,去左右以及去所有空格、制表符等,谁来写写?

论坛徽章:
0
22 [报告]
发表于 2003-12-25 14:17 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

测试了一下,我的用 '\t' 判断制表符好像不行???

论坛徽章:
0
23 [报告]
发表于 2003-12-25 14:47 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

不可能吧,一直都行的!

论坛徽章:
0
24 [报告]
发表于 2003-12-25 15:06 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

[quote]原帖由 "BingbingNorth"]不可能吧,一直都行的![/quote 发表:


我说的是在 flw 写的代码下的面的那个代码?它可以吗?

论坛徽章:
0
25 [报告]
发表于 2003-12-25 16:09 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

修改了一下。source量应该是比较小了。
性能应该还可以吧。

  1. void kill_space(char *ptr){

  2.         char *pHead=ptr, *pFoot=ptr+strlen(ptr)-1;

  3.         if (ptr==NULL) return;

  4.         while(*pFoot==32 || *pFoot=='\t') *pFoot--;
  5.         while(*pHead==32 || *pHead=='\t') *pHead++;
  6.         *(++pFoot)=0;

  7.         if (pHead==ptr) return;

  8.         while(pHead<=pFoot) *ptr++=*pHead++;
  9.         *ptr=0;

  10.         return;
  11. }
复制代码

论坛徽章:
0
26 [报告]
发表于 2003-12-25 16:09 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

1

论坛徽章:
0
27 [报告]
发表于 2003-12-25 16:10 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?


  1. char *KillSpeace(char *pStr)//去掉pStr前后空格和制表符
  2. {
  3.         char *pHead,*pTail;
  4.         char *pAddr;
  5.         if(pStr == NULL)
  6.                  return NULL;
  7.         pAddr = pStr;
  8.         for(pHead = pStr;((*pHead == ' ') || (*pHead == '\t')&&(*pHead != '\0'));pHead ++);
  9.         for(pTail = pStr + strlen(pStr) -1;((*pTail == ' ')||(*pTail == '\t')&&(pTail <= pHead));pTail --);
  10.         while(pHead <= pTail)
  11.                 *pStr++ = *pHead ++;
  12.         *pStr = '\0';
  13.         return pAddr;
  14. }
复制代码

论坛徽章:
0
28 [报告]
发表于 2003-12-25 16:19 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

注意,他的要求是:返回值是 void, 不是char*。

论坛徽章:
0
29 [报告]
发表于 2003-12-25 16:32 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

[quote="只爱一点点"]

我说的是在 flw 写的代码下的面的那个代码?它可以吗?[/quote]
能运行啊,而且跟最佳状态已经不远了(只要解决多余的内存移动,但是如果要解决多余的内存移动,代码就变长了)。

论坛徽章:
0
30 [报告]
发表于 2003-12-25 16:44 |只看该作者

如何又简洁又安全地去掉字符串前面和后面的空符号?

原帖由 "BingbingNorth" 发表:

能运行啊,而且跟最佳状态已经不远了(只要解决多余的内存移动,但是如果要解决多余的内存移动,代码就变长了)。


???你是怎么测试的,把主程序贴出来看看可以吗?

我都忘了,想从控制台读一行字符串都想不起来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP