这里我试图使用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;
}
答案 0 :(得分:9)
答案 1 :(得分:3)
str
指向字符串文字。字符串文字是只读的。尝试:
char str[] = "welcome";
答案 2 :(得分:-1)
你的char*
实际指向常数。即,您正在尝试修改存储在程序的常量数据部分中的内容。
char* str = strdup("welcome");