Проверка заданной строки на наличие любого символа из множества на Си
Необходимо реализовать проверку на Си:
output_file = "aqhdkr<?*hfgd" // Входная строка с произвольными символами
wrong = "<>:\"/\?*"; // Запрещенные символы
Как можно технично проверить отсутствие запрещенных символов во входной строке? Только перебором в лоб? Заранее спасибо!
Ответы (1 шт):
Автор решения: Anime.pdf
→ Ссылка
в библиотеке <string.h> есть функция char *strpbrk(const char *string1, const char *string2);, она ищет символы из строки 2 в строке 1 и возвращает указатель на первый встречающийся символ, или если символ не нашелся, то NULL, таким образом можно упростить программу.
#include <stdio.h>
#include <string.h>
int main(void)
{
char output_file[] = "aqhdkr<?*hfgd";
char wrong[] = "<>:\"/\?*";
char *result = strpbrk(output_file, wrong);
printf("The first occurrence of any of the characters \"%s\" in "
"\"%s\" is \"%s\"\n", wrong, output_file, result);
}
Подробную информацию об этой функции можно найти на сайте IBM: https://www.ibm.com/docs/en/i/7.1?topic=functions-strpbrk-find-characters-in-string#strpbrk