for(;*str||*pattern;str++,pattern++){
の部分を
for(;;str++,pattern++){
if(*str||*pattern){
break;
}
に変えたら成功した・・・・
もしかしたらforについて勘違いしている部分があるかも(汗