我试图制作一个比较两个字符串的程序。如果它们相同,我想匹配*s1
和*s2
。但是,如果s2
包含明星(’*’)
,我们可以用任意字符串(甚至为空)替换此星标,以使s1
和s2
相同,并s2
可以容纳尽可能多的明星。
例如,"main.c"
和"*.c"
可以匹配,因为可以用字符串’*’
替换"main"
以使这两个字符串相同。到目前为止我所尝试的内容可以在下面的代码中看到:
#include
int identic(char *s1, char *s2)
{
if(*s1 != '\0' && s2 == '')
return (identic(s1 + 1, s2) || identic(s1, s2 + 1));
if(*s1 == '\0' && s2 == '')
return (identic(s1, s2 + 1));
if(*s1 == *s2 && *s2 != '\0' && *s2 != '\0')
return (identic(s1 + 1, s2 + 1));
if(*s1 == *s2 && *s1 == '\0' && *s2 == '\0')
return (1);
return (0);
}
int main() {
printf("%c\n", identic("asfd", "f"));
}
答案 0 :(得分:2)
当我将s2 == ''
替换为*s2 == '*'
而#include
替换为#include <stdio.h>
时,您的代码似乎工作正常。