2
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");
4

2 に答える 2

8

一発ギャグ:

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

もう少し最適化:

int condition = p[strspn(p, " ")] == '\0';
于 2010-07-27T13:39:26.417 に答える
1

これをすばやく行う方法が必要な場合は、独自の関数を作成することをお勧めします (' ' 文字のみを検索すると仮定します)。

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

だからあなたはただテストする必要があります

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

何か誤解していたら訂正してください:)

ところで、私はそれをテストしませんでしたが、これは最悪の場合、他の提案された方法と同じくらい速くなるはずです. ワンライナーのストレンジャーの(エレガントな)ソリューションが必要な場合は、行く方法です!

于 2010-07-27T16:14:26.757 に答える