??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;
else
return0;
}
??在直接调用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;
else
return0;
}
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