Вы пытаетесь изменить строковый литерал. Строковые литералы не могут быть изменены (т.е. они доступны только для чтения).
Программа, которая пытается изменить строковый литерал, демонстрирует неопределенное поведение: программа может быть в состоянии «успешно» изменить строковый литерал, программа может аварийно завершить работу (немедленно или позднее), программа может показать необычное и неожиданное поведение или что-то еще может произойти. Все ставки отключены, когда поведение не определено.
Ваш код объявляет original_string
как указатель на строковый литерал "ABC"
:
char* original_string = "ABC";
Если вы измените это на:
char original_string[] = "ABC";
тебе должно быть хорошо идти. Это объявляет массив char
, который инициализируется содержимым строкового литерала "ABC"
. Массиву автоматически присваивается размер четырех элементов (во время компиляции), потому что это размер, необходимый для хранения строкового литерала (включая нулевой терминатор).