交换字符仅给出指针

时间:2012-10-13 15:53:56

标签: c string pointers swap

  

可能重复:
  Why do I get a segmentation fault when writing to a string?

如果我有一个指针并且我知道两个字符的索引,我将如何交换字符(我实际上没有分配数组)

即。

char *str = "hello"我知道并且我想交换索引0和4的'h'和'o',然后返回指针。

我习惯于做

的惯例
temp = array[i];
array[i] = array[j];
array[j] = temp;

4 个答案:

答案 0 :(得分:3)

嗯,你不能用指向字符串文字的指针。文字是不可改变的。坚持你总是这样做的方式。

答案 1 :(得分:1)

temp = array[i];
array[i] = array[j];
array[j] = temp;

答案 2 :(得分:1)

以下声明:

char *str = "hello";

应该警告你不安全的行为:

const char *str = "hello";

因为根据C标准尝试修改字符串litteral是一种未定义的行为,所以你应该使用数组。

char str[] = "hello";

然后,交换数组的元素既简单又安全:

char tmp = str[0];
str[0] = str[4];
str[4] = tmp;

答案 3 :(得分:0)

某些操作系统/编译器允许您修改字符串文字,主要是AIX 5.1。

如果修改了代码中的字符串文字,那么让代码跨平台就太麻烦了,因为你必须重写代码来编译Linux。