Да, функция strspn()
будет делать то, что вы хотите. Детали немного отличаются от REXX VERIFY, но вы можете использовать его для выполнения тех же тестов.
В частности, strspn()
вычисляет длину начального сегмента тестовой строки, которая состоит из символов из указанного набора , Это дает вам (основанный на нуле) индекс первого символа, не входящего в набор, или длину строки (которая является индексом его терминатора), если вся строка состоит из символов из указанного набора. Обратите внимание, что значение 0
возвращаемого значения обязательно отличается. Для strspn()
это означает, что символа с индексом 0
нет в наборе (или, как особый случай, что входная строка пуста).
Вы можете легко определить, является ли вся строка состоит из символов из набора тестов, взглянув на значение символа в возвращенном индексе:
char *str = "foo bar"; /* search string */
size_t loc;
loc = strspn(str, "aeiou"); // returns 0
printf("%d\n", (str[loc] == 0)); // prints 0
loc = strspn(str, "abfor"); // returns 3
printf("%d\n", (str[loc] == 0)); // prints 0
loc = strspn(str, " abfor"); // returns 7
printf("%d\n", (str[loc] == 0)); // prints 1