繁体   English   中英

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

[英]How to check if string2 has characters not in string1?

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

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

我已经尝试使用strpbrk(String2,String1)但在任何字符返回true,只要String1的存在String2

有更好的方法吗?

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;
}

您可以使用union-find的简化版本。

首先,您遍历string1并用1标记所有字符。 我编写了简化的代码,您可以完成它。

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

接下来,循环遍历string2并检查是否标记了当前char。

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

这将打印string2中所有不在string1字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM