gpt4 book ai didi

c - 使用递增的 ASCII 值处理字符串中的多个 '\000'

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:04 26 4
gpt4 key购买 nike

我正在开发一个应用程序,在该应用程序中我遇到了一个字符串,该字符串之间包含多个“\000”终止字符。我想要字符串中的空字符。在处理这个时,字符串仅在 '\000' 处终止,所以我试图增加它的 ASCII 值。但是当我这样做时,我遇到了段错误。

我在下面写了代码段

 char *content; 
content = malloc(8);
content = "\037\000\000\000\000\037\037\037";
int content_length = 8;
content[1] = content[1] + 1; // Increasing the ASCII value

在这里,如果我删除增加 ASCII 值的最后一行,我的应用程序中只会收到 1 个字节。所以更改了第二个字节 (content[1]),然后应该传输 2 个字节,但我得到了段错误。

我做错了什么吗?十六进制或八进制数会产生这样的结果吗?

谢谢

最佳答案

"\037\000\000\000\000\037\037\037"

是一个字符串文字。字符串文字在 C 中是不可修改的。写入字符串文字是未定义的行为。

然后:

content = malloc(8);
content = "\037\000\000\000\000\037\037\037";

您从 malloc 获得了一些内存,但您正在覆盖指针对象以使其指向 elsewehere(字符串文字),这称为内存泄漏

关于c - 使用递增的 ASCII 值处理字符串中的多个 '\000',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com