我有char* myChar = "HELLO"
。我想切换E和O的位置。我尝试myChar[1] = myChar[4]
,但这不起作用。请帮忙!
答案 0 :(得分:7)
首先,该字符串文字可能存储在只读内存中。您可以通过将字符串声明为字符数组来解决此问题:
char myChar[] = "HELLO";
要交换字符,您必须使用临时变量:
char c1 = myChar[1];
myChar[1] = myChar[4];
myChar[4] = c1;
答案 1 :(得分:1)
您已将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;
这是交换两件事的一种非常常见的“算法”。