str является константной строкой, то есть хранится в области, которую вы не можете изменить (char *str = "abac";
) tail
указывает на str
, и вы также не можете редактировать ее, tail[i] =temp;
является попыткой записи только для чтенияarea.
Одним из решений является изменение объявления str
на char str[] = "abac";
, которое будет выделять массив размером «abac \ 0» и копировать в него строку «abac \ 0».Поскольку массивы находятся в памяти для чтения и записи (в случае массива в функции - в стеке), вы сможете изменить строку.Например, char *str = "abac";
, который помещает строку в постоянную память и назначает указатель на строку str
.