基本的には

for (i = 0; i + strlen(key) < strlen(buf); ++i) {
  int flg = 1;
  for (j = 0; j < strlen(key); ++j)
     if (key[j] != '_' && key[j] != buf[i+j]) flg = 0;
  if (flg) return 1;
}
return 0;

くらいで辞書の各行を走査してやりゃいいだけのような。