有没有更简单的方法在c中执行以下操作?
unsigned short check_str(char *str)
{
while (*str)
{
if (!(*str == ' ' || *str == '(' || *str == ')' ||
*str == '1' || *str == '2' || *str == 'a' ||
*str == 'x' || *str == 'b'))
return 0;
str++;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
基本上它会检查字符串中除列出的字符之外的任何字符,如果找到,则返回false.有更简单的功能吗?
Pav*_*aev 20
您想要标准库函数strspn:
strspn(str, " *(12axb") == strlen(str);
Run Code Online (Sandbox Code Playgroud)
它会计算字符,str直到它看到第一个不是第二个参数中的一个字符.因此,如果它没有找到任何不匹配的字符,它将返回字符串的长度.
编写相同的更快的方法,虽然可能不太清楚,但是检查\0而不是调用strlen:
str[strspn(str, " *(12axb")] == '\0';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |