如何检查string2是否在string1中没有字符?

时间:2019-05-29 15:44:10

标签: c

char String1 = "1234567890+-";
char String2 = "1+a";

String2是输入,我想检查它是否包含String1中没有的任何字符。

我尝试使用strpbrk(String2,String1),但是只要String1中的任何字符都存在于String2中,它就会返回true。

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

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 :(得分:1)

您可以使用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中的字符。