如何重新排列char *中的字符?

时间:2011-12-17 02:29:13

标签: iphone c string indexing char

我有char* myChar = "HELLO"。我想切换E和O的位置。我尝试myChar[1] = myChar[4],但这不起作用。请帮忙!

2 个答案:

答案 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;

这是交换两件事的一种非常常见的“算法”。