今天代码里面需要判断一个字符是不是white space(空格或者tab字符),于是就想到了库函数isspace,
然后就在代码里面写下了如下代码:
// trim heading white space
for (i = 0; i < strlen(pcBuf); i++)
{
if(isspace(pcBuf[i]) !=TRUE)
{
break;
}
}
pcBuf = (pcBuf + i); // drop the white space
// only keep one white space in the body
nLen = strlen(pcBuf);
for(i = 0;i < nLen; i++)
{
if(isspace(pcBuf[i]) ==TRUE && isspace(pcBuf[i+1]) ==TRUE)
{
j=i;
for( ; j < nLen - 1; j++)
{
pcBuf[j]=pcBuf[j+1];
}
nLen--;
i--;
pcBuf[nLen]=0;
}
}
然后测试发现代码不按照期望的结果工作,开始还不知道为什么,以为收到的字符串内容有问题,
后来打印发现字符串内容没问题,明明就是数组,但是if(isspace(pcBuf[i]) != TRUE)判断失败,
然后查看isspace的返回值,发现
返回值:非0表示是空格、制表符或换行符,此时非零不是1;0表示不是空格。
isspace函数用于测试参数是否为空格、制表符或换行符。
头文件:ctype.h。
语法 int isspace(int c);
c:字符或ASCII码。
返回值:非0表示是空格、制表符或换行符;0表示不是。
示例 本示例使用isspace函数测试参数是否为空格符、制表符或换行符。
int main()
{
int a,b,c,d,e; //声明变量
a = isspace('a'); //测试小写字母
b = isspace('@'); //测试其他字符
c = isspace('\t'); //测试制表符
d = isspace('\r'); //测试换行符
e = isspace(' '); //测试空格符
cout<
}
运行结果:
0 0 8 8 8
所以如果要用isspace 判断字符是否是空白字符,则需要如下判断
if (!isspace(c)) 或者 if (isspace(c))
阅读(2088) | 评论(0) | 转发(0) |