Проблема в том, что константа символьный массив "hello"
может неправильно изменяться функцией, которой он был передан. Итак, просто убедитесь, что вы передаете неконстантный массив (например, создавая локальный массив для передачи, если результат не нужен вне вызывающей стороны squeeze
):
int main()
{
char xxx[] = "hello";
printf("%s", squeeze(xxx, 'o'));
return 0;
}
Можно ожидать, что такую константу можно передать только в аргумент const
(чтобы сам компилятор мог сказать вам, что вы делаете неправильно), но, увы, это не то, что предписывает стандарт C предположительно по причинам обратной совместимости с историческим кодом).