测试代码如下:
#include <stdio.h>
#include <stdlib.h>char * Trim(char *str);
int main(int argc, char *argv[])
{
char str1[]=" ";
char str2[]="\0";
char str3[]=" abc def ghi ";
Trim(str1);
printf(
"[%s]\n",str1);
Trim(str2);
printf("[%s]\n",str2);
Trim(str3);
printf("[%s]\n",str3);
system("PAUSE");
return 0;
}/*
令字符指针变量t指向字符串的最后一个字符,
若t的值为空格且t的地址大于s的地址,则将t所处地址的值置为字符串结束,
然后令t的地址继续减小;
令字符指针变量f指向字符串第一个非空格处,将f以后的字符前移;
*/
void Trim(char *s)
{
char *t = s + strlen(s) - 1;
char *f=s;
int iTemp=0;
while (isspace(*t) || isspace(*f))
{
if(t >= s && isspace(*t))
{
*t = '\0';
--t;
}
if(f <= t && isspace(*f)) f++;
}while (f <= t)
{
*(s+iTemp)=(*f);
++iTemp;
++f;
}
*(s+iTemp)='\0';
}
该程序的测试环境:
WinXPSP2,Dev C++ 4.9.9.2