Вы можете найти конечную позицию буфера [] и использовать ее в качестве места назначения для копии сообщения []. Подойдет любое сканирование учебника строки для терминала '\ 0', хотя вы должны быть уверены, что не вышли за пределы буфера [].
И это показывает большую проблему. Если вы понятия не имеете, насколько заполнен буфер и является ли ваше перемещение дополнительных 12 символов (считая автоматически поставляемый '\ 0' в конце) причиной переполнения буфера или нет, вам нужно каким-то образом узнать, что емкость буфера [] такова, что ваш код может работать в обороне.
Кроме того, хотя сделать const char * message = ... безопасно, буфер const char * кажется немного странным, если вы собираетесь его изменить. Хотя компилятор C может этого не заметить, это действительно нарушение договора, подразумеваемого использованием const char * buffer. Кроме того, вызывающей стороне разрешено использовать буфер [] в хранилище только для чтения, хотя я предполагаю, что вы являетесь единственным пользователем функции A.
Так что вы можете посмотреть, как изменить список параметров и определить интерфейс для этой функции, чтобы она могла защищаться от переполнений буфера, плохо инициализированных строк буфера [] и т. Д.