Есть ли способ сделать это, или я должен объявить это по-другому?
char* arr[5] = {"Mercury", "Mars", "Venus", "Earth", "Pluto"};
arr
- это массив из 5 char
указателей на строковые литералы. Любая попытка изменить строковый литерал вызывает неопределенное поведение, поэтому вы не можете их изменять.
Если вы хотите изменить содержимое, вам нужно fe, чтобы определить их как двумерный массив char
s:
char arr[5][10] = {{"Mercury"}, {"Mars"}, {"Venus"}, {"Earth"}, {"Pluto"}};
и использовать
strcpy(arr[0], "Uranus");
size_t len = strlen(arr[0]);
for(size_t i = 9; i > (len + 1); i--) // To remove all left characters from prev. string.
{
a[0][i] = '\0';
}