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 == ' '来代替。
若有不足之处,还望指正!