gpt4 book ai didi

c - 从指针中减去得到长度

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:15 24 4
gpt4 key购买 nike

我想在一个更大的字符串中搜索后找到字符串的一部分的长度。

我不能使用 strlen,因为我正在处理二进制数据。

char *temp= "this is some random text";
char *temp1 = strstr(temp,"some");
int len = strlen(temp);
int len1 =0;

len1 = temp+len - temp1;

获取“一些随机文本”的长度

len1 返回负值(即使是正值也是错误的)

最佳答案

如果您的数据不是以 NULL 结尾的,则您不能对其调用 strstr(),原因与您不能调用 strlen() 的原因相同。如果这样做,您最终可能会扫描到数据末尾。如果你在那里找到一个匹配项(这是很有可能的;读过数组末尾并不能保证程序崩溃),那么你的指针算法将给你一个负值,因为你'从较小的地址中减去较大的地址。

另一方面,如果您的数据实际上正确地以 NULL 结尾,那么您的问题可能是 strstr() 找不到子字符串,因此返回 NULL。你在检查 NULL 吗?否则,您最终会做的是:

len1 = temp + len - (char*)NULL;

关于c - 从指针中减去得到长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17230268/

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