两个字符的XOR运算

Viv*_*vek 1 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;
}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 9

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

尝试改为:

char str[] = "welcome";
Run Code Online (Sandbox Code Playgroud)

关于这个问题有一个C FAQ.