[英]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.