Как я могу переставить символы в char *? - PullRequest
0 голосов
/ 17 декабря 2011

у меня char* myChar = "HELLO".Я хотел бы поменять местами E и O. Я пытался сделать myChar[1] = myChar[4], но это не работает.Пожалуйста, помогите!

Ответы [ 2 ]

7 голосов
/ 17 декабря 2011

Во-первых, этот строковый литерал, вероятно, хранится в постоянной памяти. Вы можете исправить это, объявив строку как массив символов:

char myChar[] = "HELLO";

Чтобы поменять символы, вам нужно использовать временную переменную:

char c1 = myChar[1];
myChar[1] = myChar[4];
myChar[4] = c1;
1 голос
/ 17 декабря 2011

Вы присвоили все, что находится в myChar[4] в myChar[1]. (это все, что вы сделали там) Вам необходимо создать временную переменную char temp; и сделать следующее:

Edit: As mentioned by Tim Cooper, char myChar[] = "HELLO"; - // This will remove it's constness.
temp = myChar[1];
myChar[1] = myChar[4];
myChar[4] = temp;

Это очень распространенный «алгоритм» для обмена двумя вещами.

...