0

可能重复:
为什么在写入字符串时会出现分段错误?

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

IE

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

我习惯了

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

4 回答 4

3

好吧,您不能使用指向字符串文字的指针。字面量是不可变的。坚持你一直做的方式。

于 2012-10-13T15:56:17.983 回答
1
temp = array[i];
array[i] = array[j];
array[j] = temp;
于 2012-10-13T15:55:34.170 回答
1

以下声明:

char *str = "hello";

应该是,警告您不安全的行为:

const char *str = "hello";

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

char str[] = "hello";

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

char tmp = str[0];
str[0] = str[4];
str[4] = tmp;
于 2012-10-13T17:11:57.683 回答
0

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

如果修改代码中的字符串文字,那么让您的代码跨平台变得很痛苦,因为您必须重写代码才能为 Linux 编译。

于 2012-10-14T22:06:33.887 回答