去除字符串中的空格

用C语言写一个函数,去除字符串中的空格,并返回删除的空格的个数。不允许开辟新的空间,只能申请简单类型的自动变量。时间复杂度要求为O(n)。

#include <bitset>
#include<iostream>
int deleteSpace(char * pstr);
void main()
{
    char word[]="dhkak df d fd   fdjfkda  dfd ff  f fd da ";
    deleteSpace(word);
    std::cout<<word<<std::endl;
}

int deleteSpace(char *pstr)
{
    int newLen = strlen(pstr);
    char *p,*q;
    p=pstr;
    while(*p!=' ') p++;
    q=p;
    while(1)
    {
        while(*q==' ') 
        {
            q++; 
            if (*q=='') break;
        }        

        if(*q=='')
        {
            *p=*q;
            break;
        }
        else
        {
            *p=*q;
            *q=' ';
            q++;
            p++;
        }
    }
    int oldLen = strlen(pstr);

    return  oldLen-newLen;
}

 去除首尾的空格

char* Trim(char* lpStr)
{
    if(lpStr == NULL)    //如果为空则返回NULL
        return NULL;

    char tmp[0x200] = {0};    //临时保存
    strcpy(tmp, lpStr);
    char* ptr = tmp;
    ptr = tmp + strlen(tmp) - 1;    //定位到最后一个字符
    while(*ptr == 0x20)    //从最后开始删除
    {
        ptr--;
        if(ptr < tmp)    //全部是空格则退出
        {
            strcpy(lpStr, "");
            return lpStr;
        }
    }
    *(ptr + 1) = 0;    //截断后面的空格
    ptr = tmp;
    while(*ptr == 0x20)    //从前面开始删除
        ptr++;    
    strcpy(lpStr, ptr);    //返回去掉空格后字符串
    return lpStr;
}

http://www.cnblogs.com/memset/archive/2012/03/10/2388569.html

http://www.cnblogs.com/houjun/p/4915484.html(原文中有点问题) 

原文地址:https://www.cnblogs.com/lwngreat/p/4921719.html