char String1 = "1234567890+-";
char String2 = "1+a";
String2是输入,我想检查它是否包含String1中没有的任何字符。
我尝试使用strpbrk(String2,String1)
,但是只要String1
中的任何字符都存在于String2
中,它就会返回true。
有更好的方法吗?
答案 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
中的字符。