Вы ищете в 5-символьных группах строку «Hello».Итак, вы смотрите на свой файл так:
hi He
llo t
his i
s my
Hello
to\n
the H
ello
world
Только один из тех совпадений, который вы ищете.Вам, вероятно, следует читать файл построчно (используя больший буфер, на всякий случай) и искать / заменять в каждой строке текст для поиска.
Кроме того, вы выходите из 0 в случае сбоя и 1в случае успеха (который задом наперед; 0 означает успех, все остальное означает провал, традиционно).И вы выходите после первого матча, а не продолжаете искать дальше.
Чтобы читать построчно и выполнять поиск / замену, сделайте что-то вроде этого:
FILE *f = ...;
char buf[1024];
while (fgets(buf, sizeof(buf), f)) {
char *pos;
while ((pos = strstr(buf, search)) != NULL) {
char temp = *pos;
*pos = 0;
fprintf(out, "%s%s", buf, replace);
*pos = temp;
buf = pos + strlen(search);
}
fprintf(out, "%s", buf);
}
Это нене идеально, так как длинная строка (> 1023 символа) будет разрезана на части, возможно, в середине поискового токена, но в большинстве случаев будет работать.