>>578 こういうことでいいのかな?
while (txt[pt] == pat[pp]) {
↓
while (1) {
printf("compare : txt[%d]=%c and pat[%d]=%c\n", pt, txt[pt], pp, pat[pp]);
if(txt[pt] != pat[pp]) break;

pt += skip[txt[pt]];
↓
pt += skip[txt[pt]];
printf("jump : %d to %d\n", pt, pt+skip[txt[pt]]);