gpt4 book ai didi

c - 访问指针 C 指向的值

转载 作者:行者123 更新时间:2023-11-30 19:19:41 27 4
gpt4 key购买 nike

我有以下代码:

    char * transfer_encoding;
char coso;
if (transfer_encoding = strstr(first_chunk.content, "Transfer-Encoding:")){

coso = *(transfer_encoding + 18);
printf(" %s ", coso);
}

它只是搜索字符串“Transfer-Encoding:”,然后尝试访问“:”之后的值(18 = len(“Transfer-Encoding:”))。它给我一个读取地址 0x0000020 的访问冲突。为什么?我想遍历“Transfer-Encoding”之后的字节以找到“\r\n”。

澄清问题。我想遍历“传输编码”之后的字节以找到“\r\n”。我该怎么做?谢谢。

最佳答案

您在Transfer-Encoding:之后获取地址

transfer_encoding + 18

取消引用它

coso = *(transfer_encoding + 18);

并尝试将其解释为字符串

printf(" %s ", coso);

正确的方法是

printf(" %s ", transfer_encoding + 18);

不取消引用它。

<小时/>

地址0x0000020来自冒号后面的字符,通常是一个空格。这是 ASCII 格式的 320x20

<小时/>

如果你想查看该地址的内容,取消引用指针是完全有效的,例如

char cr = *(transfer_encoding + 18);
char nl = *(transfer_encoding + 18 + 1);
if (cr == '\r' && nl = '\n')
printf("CRLF found\n");

要比较整个字符串,您还可以使用 strcmpstrncmp

if (strncmp(transfer_encoding + 18, "\r\n", 2) == 0)
printf("CRLF found\n");

关于c - 访问指针 C 指向的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23877299/

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