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);
如何获取字符串中第一个非空白字符的索引。
例如对于字符串 " #$%abcd"
我希望得到 #
.
使用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);