Проверка заданной строки на наличие любого символа из множества на Си

Необходимо реализовать проверку на Си:

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

→ Ссылка