2016-07-17 8 views
3

2つの文字列を比較するプログラムを作成しようとしています。私は一致する場合*s1*s2を一致させたいです。しかし、s2に星(’*’)が含まれている場合、s1s2が同じになるようにこの星を置き換えることができます(空の場合もあります)。s2はできるだけ多くの星を保持できます。
を文字列"main"に置き換えて2つの文字列を同一にすることができるため、たとえば"main.c""*.c"が一致します。私がこれまで試したどのような以下のコードで見ることができます。2つの文字列が一致する場合は一致するプログラムを作成する

 #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

ビクター:コードは 'C'ではなく' C++ 'です。 – user1336087

+0

このプログラムを書くのは、特に、複数の '* '文字を許可する場合には、はるかに難しいです –

+0

コンパイルエラーはありませんでしたか?"エラー:空の文字定数 " ' if(* s1!=' \ 0 '   && s2 == ') ' –

答えて

2

私は*s2 == '*'#include <stdio.h>#includes2 == ''を交換するときは、あなたのコードが正常に動作するようです。

関連する問題