你这判断有问题,else if应该放到for(j=0;;j++)之外
if(*(a+i) == *b) { for(j=0;;j++) { if( * (b+j) == '\0') break; if( * (a+i+j) != * (b+j)) break; } if(* (b+j) == '\0') count++; }