#include <stdio.h>

char *search(char *s,char *p);

int main(){
    printf("NULL %s\n",     search("abcdefg","aaa"));
    printf("abcdefg %s\n",  search("abcdefg","a"));
    printf("g %s\n",        search("abcdefg","g"));
    printf("NULL %s\n",     search("abcdefg","ac"));
    printf("defg %s\n",     search("abcdefg","de"));
    printf("fg %s\n",       search("abcdefg","fg"));
    printf("NULL %s\n",     search("abcdefg","df"));
    printf("abcdefg %s\n",  search("abcdefg",""));
    printf("未定義 %s\n",   search("abcdefg",NULL));/* 未定義 */
    printf("未定義 %s\n",   search(NULL,"a"));/* 未定義 */
    
    return 0;
}

char *search(char *s,char *p){
    return s&&p?*p?*s?((*p==*s)&&(s+1==search(s+1,p+1)))?s:search(s+1,p):NULL:s:NULL;
}
