有哪些技术可以测试字符串是否都是空格?

时间:2010-07-27 13:36:02

标签: c cstring

char *p = "   woohoo";

int condition = /* some calculation applied to p            */ 
                /* to look for all 0x20/blanks/spaces only  */ 

if (condition)
{
}
else
{
    printf("not ");
}

printf("all spaces\n");

2 个答案:

答案 0 :(得分:8)

一衬垫:

int condition = strspn(p, " ") == strlen(p);

略微优化:

int condition = p[strspn(p, " ")] == '\0';

答案 1 :(得分:1)

如果你想要一个快速的方法来做到这一点,我想到的最好的事情是编写你自己的函数(我假设你只搜索''字符)。

int yourOwnFunction(char *str, char c) {
    while(*str != '\0' && *str != c) {
        str++;
    }
    return *str == '\0';
}

所以你只需要测试

if(yourOwnFunction(p,' ')) {
    ...
} else {
    ...
}

如果我误解了某些事情,请纠正我:)

顺便说一下,我没有测试它,但这应该在最坏的情况下和其他提议的方法一样快。如果你只是想要一个单线版(优雅)解决方案就可以了!