Первый совет - попытаться отладить вашу программу, если она не работает.
for (i = 0; i<80; i++) {
if (output[i] == replace[i])
output[i] = toBeReplacedBy[i];
}
В этом цикле есть две проблемы.
Первое - это итерация до тех пор, пока i
не достигнет 80. Давайте посмотрим, что произойдет, когда i
станет 3. output[3]
в случае abcdefabc равно d , но что такое replace[3]
? В вашем массиве замены было всего 3 буквы, поэтому вы должны вернуться в массив замены, как только закончите с одним вхождением его в исходную строку.
Во-вторых, вы проверяете букву за буквой.
Скажем, исходный массив, который вы назвали output
каким-то образом был abkdefabc , первые три буквы не соответствуют вашей замещающей строке, но вы проверите первые две буквы, которые будут совпадать с первыми двумя заменами буквы и вы их поменяете неправильно.
Итак, вам нужно сначала проверить, что вся замещающая строка есть, и только потом заменить.