两个字符的XOR运算

时间:2011-08-21 08:05:13

标签: c char xor

这里我试图使用XOR操作交换字符串中的两个字符。但是GCC编译器给我一个segmentation fault

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *str = "welcome";

    str[0] = str[0] ^ str[1];  // Segmenation fault here
    str[1] = str[0] ^ str[1];
    str[0] = str[1] ^ str[0]; 

    printf("%s", str);
    return 0;
}

3 个答案:

答案 0 :(得分:9)

您无法将C. str中的文字更改为只读内存。

尝试改为:

char str[] = "welcome";

主题上有C FAQ

答案 1 :(得分:3)

str指向字符串文字。字符串文字是只读的。尝试:

char str[] = "welcome";

答案 2 :(得分:-1)

你的char*实际指向常数。即,您正在尝试修改存储在程序的常量数据部分中的内容。

 char* str = strdup("welcome");