Как проверить, есть ли в string2 символы, отсутствующие в string1? - PullRequest
0 голосов
/ 29 мая 2019
char String1 = "1234567890+-";
char String2 = "1+a";

String2 является вводом, и я хочу проверить, содержит ли он какой-либо символ, которого нет в String1.

Я пытался использовать strpbrk(String2,String1), но это возвращает true, если любой символ в String1 существует в String2.

Есть ли лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

strspn вернет индекс первого символа в String2, которого нет в String1. Если все символы совпадают, индекс будет заканчиваться нулем.

#include <stdio.h>
#include <string.h>

int main ( void) {
    char *String1 = "1234567890+-";
    char *String2 = "1+a";
    int index = strspn ( String2, String1);
    if ( String2[index]) {
        printf ( "character \'%c\' not found in %s\n", String2[index], String1);
    }
    return 0;
}
1 голос
/ 29 мая 2019

Вы можете использовать упрощенную версию union-find.

Сначала вы перебираете string1 и помечаете все символы 1. Я пишу упрощенный код, вы можете завершить его.

char mark[255];
for(s=string1; s; s++) mark[*s]=1;

Далее вы перебираете string2 и проверяете, отмечен ли текущий символ.

for(s=string2; s; s++) if (!mark[*s]) printf("%c", *s);

Это напечатает все символы из string2, которые не в string1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...