去除给定的字符串中左边、右边、中间的所有空格的实现
2013-05-20 17:29 夏洛克·福尔摩斯 阅读(379) 评论(0) 编辑 收藏 举报#include<stdio.h>
#include<string.h>
#include<memory.h>
#include<ctype.h>//字符类型判断函数头文件,新的空格判断函数isspace()
char *TrimString(char *Dest)
{
int n,nlen;
if(Dest!=NULL)
{
//以下删除字符串右边的空格
for(n=strlen(Dest);n>0;n--)
{
if(!isspace(Dest[n-1])) break;
}
Dest[n]='\0';
//以下删除字符串左边的空格
nlen=strlen(Dest);
for(n=0;n<nlen;n++)
{
if(!isspace(Dest[n]))
break;
}
strcpy(Dest,Dest+n);
//以下删除字符串中间的空格
while(1)
{
char q[100];
int n;
for(n=0;n<strlen(Dest) && Dest[n]!='\0';n++)
{
memset(q,0,sizeof(q));
while(isspace(Dest[n]))
{
strcpy(q,Dest+n+1);
Dest[n]='\0';
strcat(Dest,q);
}
}
if(Dest[n]=='\0')
break;
}
}
return Dest;
}
int main()
{
char string[]=" ya n g b i n g ";
TrimString(string);
printf("%s\n",string);
return 0;
}
/**
函数名:ZipProLastSpace
功能 :去掉前导空格和结尾空格
参数 :
字符串
返回值:
0/-1
**/
int ZipProLastSpace(char *str){ int nBeginFlag=0; int i,j; /*两个游标*/ i=j=0; while(str[i]!='\0'){ if(str[i]==' ' || str[i]=='\t'){ /***空格***/ if(!nBeginFlag){ /***前导空格,继续****/ i++; continue; }else{ /***非前导空格****/ str[j++]=str[i++]; continue; } }else{ /***正常***/ nBeginFlag=1; str[j++]=str[i++]; continue; } } /****压缩最后的空格****/ str[j]='\0'; j--; while(j>0){ if(str[j]==' '){ str[j]='\0'; }else{ break; } j--; } return(0); }