2016-07-17 4 views
3

두 문자열을 비교하는 프로그램을 만들려고합니다. 일치하는 경우 *s1*s2을 일치시키고 싶습니다. 그러나 s2에 별 (’*’)이 포함되어있는 경우 s1s2이 동일한 문자열 (공백이라도 있음)로 대체 할 수 있으며 가능한 한 많은 별을 s2 개 포함 할 수 있습니다.
예를 들어 ’*’을 문자열 "main"으로 바꾸어 두 문자열을 동일하게 지정할 수 있기 때문에 "main.c""*.c"이 일치 할 수 있습니다. 지금까지 아래의 코드에서 볼 수있는 노력은 무엇 :두 문자열이 일치하는 경우 일치하는 프로그램 만들기

 #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

Victor : 코드는 C++가 아니고 C로되어 있습니다. – user1336087

+0

그 프로그램을 쓰는 것이 훨씬 더 어렵습니다. (특히 여러 개의'*'문자를 허용하는 경우) –

+0

컴파일러 오류가 발생하지 않았습니까? "오류 : 빈 문자 상수" 'if (* s1! = '\ 0' & nbsp; && s2 == ')' –

답변

2

내가 #include <stdio.h>*s2 == '*'#includes2 == ''를 교체 할 때, 코드가 잘 작동하는 것 같다.

관련 문제