??c语言中有很多处理string类型的函数,今天简单的使用了一下isspace()函数,自我实现调用了一下。
??包含在ctype.h头文件中
函数原型:
int isspace(int c);函数功能
??判断输入字符是否为空格/回车/制表符等
函数参数:
??获取实参char类型的字符
函数返回值:
??如果获取到的字符是空格/回车/制表符等,返回非0值(即真);否则返回0
#include<stdio.h>#include<ctype.h>int main(void){char arr[32]=" hello world "; printf("<%s>\n", arr);char*r = arr;char*p = r;char*q = arr + strlen(arr)-1;while(isspace(*p)) p++;while(isspace(*q)) q--;while(p <= q)*r++=*p++;*r =‘\0‘; printf("<%s>\n", arr);return0;}int myIsspace(char c){if(c ==‘\t‘|| c ==‘\n‘|| c ==‘ ‘)return1;elsereturn0;}??在直接调用isspace()函数时,要谨慎使用,在不同的操作平台上,可能会有崩溃行为,建议自己实现一个isspace()函数。

??这里我调用isspace()函数主要实现消除字符串两边的空格或者其他符号,例如:"??hello heima??"消除空格之后的格式为:"hello heima"
??消除实现思想:
??1. 定义两个指针p,q分别指向字符串头和尾;
??2. 再创建一个临时指针r来存放字符串数组arr的首地址:
??3. p,q遇见空格就p++和q–;一直循环直至非空。
??如图:

??
具体实现Demo:(这里使用自定义isspace()函数)
#include<stdio.h>#include<string.h>int myIsspace(char c){if(c ==‘\t‘|| c ==‘\n‘|| c ==‘ ‘)return1;elsereturn0;}int main(void){char arr[32]=" hello world "; printf("<%s>\n", arr);char*r = arr;char*p = r;char*q = arr + strlen(arr)-1;while(myIsspace(*p)) p++;while(myIsspace(*q)) q--;while(p <= q)*r++=*p++;*r =‘\0‘; printf("<%s>\n", arr);return0;}??消除结果如下所示:

原文:http://www.cnblogs.com/Bob-tong/p/6610647.html