C中字符串中非空白字符的第一个索引

First index of a non-Whitespace character in astring in C

如何获取字符串中第一个非空白字符的索引。 例如对于字符串 " #$%abcd" 我希望得到 #.

的索引 3

使用strspn()求出空格的长度,然后跳过它。

#include <stdio.h>
#include <string.h>
#include <strings.h>

const char whitespace[] = " \f\n\r\t\v";
char *str = "    Hello World!";

void main() {
    char *stripped = str + strspn(str, whitespace);
    printf("Stripped msg: '%s'", stripped);
}

为什么不对其进行编码而不是包含其他库:
这是一个起点:

int main () 
{
    char s[] = "   #$%abcd[=10=]";
    size_t i = 0;
    while(s[i] == ' ' || s[i] == '\t'|| s[i] == '\n' || s[i] == '\r' || s[i] == '\f' || s[i] == '\v')
    {
        ++i;
    }
    return i;
}

i 是第一个非空白字符的索引:

老派:

const char *ptr;
for (ptr=str; *ptr && ((unsigned char)*ptr) <= ' '; ++ptr);
return (*ptr ? ptr-str : -1);