免费注册 查看新帖 |

Chinaunix

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

[C] 我写的一个trim所有空格的方法,大家拍砖! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-01-12 15:50 |只看该作者


  1. char* m_trim(char* str)
  2. {
  3. int i = 0;
  4. char* tmp = str;
  5. while(str[i]!='\0')
  6. {
  7.   if(str[i]!=' ')
  8.     *tmp++ = str[i];
  9.   i++;
  10. }

  11.   *tmp='\0';
  12.   return str;
  13. }

复制代码

没用额外的空间^_^

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2010-01-12 15:56 |只看该作者
char* m_trim(char* str)
{
    *str = '\0';
    return str;
}

集合了ltrim,rtrim,mtirm,clear()于一身

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
13 [报告]
发表于 2010-01-12 16:12 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
14 [报告]
发表于 2010-01-12 16:13 |只看该作者

回复 #11 ubuntuer 的帖子

good

论坛徽章:
0
15 [报告]
发表于 2010-01-12 16:18 |只看该作者

回复 #13 c/unix 的帖子

char *trim4(char *s)
{
        size_t len = strlen(s);
        size_t pos;
        for (pos = 0; s[pos] != '\0'; pos++)
        {
                if (isspace(s[pos]))
                {
                        memmove(s + pos, s + pos+ 1, len - pos);
                        pos--;
                }
        }
        return s;
}

不好意思,本来在我的机器上是好的,结果我为了好看改了变量的名字。。。最后成四不像了

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

回复 #12 群雄逐鹿中原 的帖子

这就纯搞笑了,哈。。。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
17 [报告]
发表于 2010-01-12 16:32 |只看该作者
char *trimbody(char *str)
{
    if (str)
    {
        char *lpSrc = str, *lpDest = str;
        while (1)
        {
            char* lpCh = strchr(lpSrc, ' ');
            if (lpCh == NULL)
            {
                size_t szToCopy = strlen(lpSrc) + 1;
                if (lpDest != lpSrc)
                    memmove(lpDest, lpSrc, szToCopy);
                break;
            }
            else
            {
                size_t szToCopy = lpCh - lpSrc;
                if ((lpDest != lpSrc) && (szToCopy != 0))
                    memmove(lpDest, lpSrc, szToCopy);
                lpSrc += szToCopy + 1;
                lpDest += szToCopy;
            }
        }
    }
    return str;
}


回观一下,发现我错了,赶紧改之……

[ 本帖最后由 w_anthony 于 2010-1-12 22:18 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2010-01-12 16:35 |只看该作者

回复 #16 linux_ha 的帖子

笑一笑十年少嘛
俺要尽量少拍转,上一次把一个兄弟拍伤了

论坛徽章:
0
19 [报告]
发表于 2010-01-12 16:39 |只看该作者

回复 #18 群雄逐鹿中原 的帖子

:wink:

论坛徽章:
0
20 [报告]
发表于 2010-01-12 16:48 |只看该作者
LZ可以去看QT源码,看他的QString是怎么trim的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP