两个字符的异或运算
在这里,我尝试使用异或运算交换字符串中的两个字符。但是 GCC 编译器向我抛出一个分段错误
。
#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;
}
Here I am trying to swap two characters in a string using XOR operation. But GCC compiler throws me a 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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您无法更改 C 中的文字。
str
指向只读内存。尝试一下:
有一个关于该主题的 C 常见问题解答。
You can't change literals in C.
str
points to read-only memory.Try instead:
There is a C FAQ on the subject.
str
指向字符串文字。字符串文字是只读的。尝试:str
points to a string literal. String literals are read only. Try:您的 char* 实际上指向一个常量。即,您正在尝试修改存储在程序的常量数据部分中的某些内容。
Your
char*
actually points to a constant. I.e., you are trying to modify something stored in the constant data part of your program.