char * strim(char *str)//去除首尾的空格
{
char *end,*sp,*ep;
int len;
sp = str;
end = str + strlen(str) - 1;
ep = end;
while(sp<=end && isspace(*sp))// *sp == ' '也可以
sp++;
while(ep>=sp && isspace(*ep))
ep--;
len = (ep < sp) ? 0:(ep-sp)+1;//(ep < sp)判斷是否整行都是空格
sp[len] = '\0';
return sp;
}
這個函數的思想是:通過兩個指針,首指針和尾指針的移動來達到消除字符串首尾空格的功能。
當首指針在結束指針前面,並且指向的是空格字符時,進行向後移動的操作。
當尾指針在首指針後面,並且指向的是空格字符時,進行向前移動的操作。
三個指針,其中端指針是固定的指向字符串尾的指針,sp與ep是用來移動的指針。
isspace()函數:
原型:extern int isspace(int c);
用法:#include <ctype.h>
功能:判斷字符c是否爲空白符
說明:當c爲空白符時,返回非零值,否則返回零。
空白符指空格,水平製表,垂直製表,換頁,回車和換行符。
這裏也可以用* sp == ' '來代替。
若有不足之處,還望指正!