Вы не описали реальную проблему, с которой вы столкнулись, и я не буду go проходить и проверять, удовлетворяет ли ваш код этой проблеме. Однако есть по крайней мере один очевидный недостаток.
A char
- это один байт, который может содержать числа от 0 до 255. Заглавные буквы занимают диапазон 65-90 (*), см. Например эту страницу . Так что pat
на самом деле выглядит так: {65, 66, 67, 68}
.
Вы пытаетесь ввести в hashpat
эти числа, которые намного больше, чем длина массива. Вы должны распределить их по размеру 256, что удобно использовать в качестве определения.
int hashpat[MAX]={0};
int hashtxt[MAX]={0};
Несколько других случайных советов:
- Учитывая, что вы передаете
char*
, вы, вероятно, должны сделать эти char
массивы. - И аргументы
search
, и переменные в main
должны быть const char*
, так как это тип строковых литералов - Учитывая, что вы используете C ++, вы должны рассмотреть возможность использования
vector
и string
вместо массивов и символов, что, как правило, делает все немного проще.
(*) Предполагая, что мы в ASCII / UTF-8, но это совсем другой чайник с sh.