Можно применить буфер объемом не менее искомого объема (если речь о слове то минимум - длинна слова + 1 (ноль в конце)) Далее по байтно считывать файл в буфер со смещением и проверять наличие слова в буфере
Пример поиска в wav файле секции данных:
....
uint8_t Buf [5]={0,0,0,0,0};
while (1){
Buf[0]=Buf[1];
Buf[1]=Buf[2];
Buf[2]=Buf[3];
if(f_read(&SoundFile,&Buf[3],1,&BytesReaded) != FR_OK){f_close(&SoundFile);return false;}
if (strstr (Buf,"data")!=0){
if(f_read(&SoundFile,&WAV_DataSubchank.Size,4,&BytesReaded) != FR_OK){f_close(&SoundFile);return false;}
break;
}
}
....
Здесь Buf[0]=0 для корректной работы функции strstr.
Вернее Buf[5]=0