两个字符的异或运算

发布于 2024-11-30 18:44:37 字数 343 浏览 2 评论 0原文

在这里,我尝试使用异或运算交换字符串中的两个字符。但是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不可一世的女人 2024-12-07 18:44:37

您无法更改 C 中的文字。str 指向只读内存。

尝试一下:

char str[] = "welcome";

有一个关于该主题的 C 常见问题解答

You can't change literals in C. str points to read-only memory.

Try instead:

char str[] = "welcome";

There is a C FAQ on the subject.

沉默的熊 2024-12-07 18:44:37

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

char str[] = "welcome";

str points to a string literal. String literals are read only. Try:

char str[] = "welcome";
思念绕指尖 2024-12-07 18:44:37

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

 char* str = strdup("welcome");

Your char* actually points to a constant. I.e., you are trying to modify something stored in the constant data part of your program.

 char* str = strdup("welcome");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文