在这里,我尝试使用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;
}
您无法将C. str点中的文字更改为只读内存.
尝试改为:
char str[] = "welcome";
关于这个问题有一个C FAQ.