Chinaunix

标题: C/C++去空格的函数 [打印本页]

作者: xstart    时间: 2006-03-29 21:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: leopolds    时间: 2007-09-22 17:34
C++的版本对我很有用,谢谢!
作者: yuangong    时间: 2007-09-22 18:37
好象有系统自带的函数
作者: zwylinux    时间: 2007-09-22 23:59
原帖由 xstart 于 2006-3-29 21:00 发表
经过测试不会疏漏任何一种空白字符,准确可靠

----------------------------------------C---------------------------------------
#include
#include
#include

char * trim(char * ptr)
{
     ...

字符串中间的空格没去掉
作者: aindk    时间: 2012-03-21 23:07
效率太低了吧,这种类别得函数得高效的实现方式,扫描得次数应该小于 strlen()+1次
作者: pmerofc    时间: 2012-03-21 23:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: pmerofc    时间: 2012-03-21 23:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: AD8018    时间: 2012-03-21 23:25
zwylinux 发表于 2007-09-22 23:59
字符串中间的空格没去掉


trim不是去空格,请好好体会 ---

trim
vt.修剪; 整理; 装饰
adj.整齐的,整洁的; 修长的; 苗条的
n.整齐; 修剪; 健康状态; 装束
vi.削减


作者: woai97    时间: 2012-11-03 22:16
去字符串前后以及单词之间的空格
#include <stdio.h>
#include <string.h>
#include <ctype.h>

char * trim(char * ptr)
{
    int start,end,i,j,len;
    if (ptr)
    {
        for(start=0; isspace(ptr[start]); start++)
            ;
        for(end=strlen(ptr)-1; isspace(ptr[end]); end--)
            ;
        for(i=start; i<=end; i++)
            ptr[i-start]=ptr[i];
        ptr[end-start+1]='\0';

        len = strlen(ptr);

                for(i=0,j=0;i<=len;i++)
                {
                        if(ptr[i] != ' ')
                        {
                      ptr[j]=ptr[i];
                          j++;
                    }
                }

        return (ptr);
    }
    else
        return NULL;
}
作者: Ager    时间: 2012-11-03 22:24
AD8018 发表于 2012-03-21 23:25
trim不是去空格,请好好体会 ---

trim
vt.修剪; 整理; 装饰
adj.整齐的,整洁的; 修长的; 苗条的
n.整齐; 修剪; 健康状态; 装束
vi.削减


AD大虾说得没错,顶一下!

许多编程语言里的trim的概念,一般是指“去掉多余的字符”比如“去掉多余的空格”。

所谓“多余的”,就是那些被去掉后也不会破坏原有语义的部分。

显然,不应该让trim实现去掉文本中间的空格,或者说,去表文本中间的空格的功能,就不适合叫做trim。

呵呵 ……

作者: lsupper    时间: 2012-11-04 12:27
Ager 发表于 2012-11-03 22:24
AD大虾说得没错,顶一下!

许多编程语言里的trim的概念,一般是指“去掉多余的字符”比如“去掉多余 ...


嗯 也可用去前后空格,比如修饰一个单词,句子...
作者: lanshh    时间: 2012-11-05 09:14
这个只是去掉开头结尾的空格而已
作者: sickcat2004    时间: 2012-11-05 09:59
用正则吧。。。亲!
作者: netcos    时间: 2012-11-05 11:51
不用这么麻烦,一个遍历去掉所有的空格
char *test(char *str)
{
        char *p = str;
        char *s = str;
       
        while (*p != 0) {
                if (*p != ' ') *s++ = *p;
               
                p++;
        }
        *s = *p;
       
        return str;
}
作者: fengyun530    时间: 2012-11-05 12:03
netcos 发表于 2012-11-05 11:51
不用这么麻烦,一个遍历去掉所有的空格
char *test(char *str)
{

这个能起作用。回头试试!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2