gpt4 book ai didi

c - 在数组中查找子字符串时遇到问题

转载 作者:行者123 更新时间:2023-11-30 14:53:22 25 4
gpt4 key购买 nike

我正在尝试搜索一些 HTTP header ,并正在寻找包含“bbc.co.uk”的数据包。
据我所知,我正确使用了这些方法,但我必须忽略一些明显的事情,因为没有找到匹配项,尽管当我打印数据包内容时,存在这样的匹配项。
谁能看到错误吗?

 void parseHTTP(const unsigned char *packet, int length)
{
int i;
const char *blacklisted = "www.bbc.co.uk/news";
const char *payload[length+1];
for(i = 0; i < length; i++)
{
char byte = packet[i];
if (byte > 31 && byte < 127)
{
printf("%c", byte);
payload[i] = byte;
}
}
//char *result;
//result = strstr(payload, blacklisted);
//printf("%s", result);
if(strstr(payload, blacklisted) != NULL)
{
printf("Found match \n");
blacklistedCount ++;
}
}

最佳答案

您能否提供一些更具体的细节。

payload[i] = byte;// payload is array of char pointer, what's the need of storing single character into array of pointer, take payload as a single pointer


strstr(payload, blacklisted)

strstr() 第一个参数是 char* 但您采用了char 指针数组

修改您的代码如下:

void parseHTTP(const unsigned char *packet, int length)
{
int i,j=0,blacklistedCount=0;
const char *blacklisted = "www.bbc.co.uk/news";
char *payload=malloc(length);
for(i = 0; i < length; i++)
{
char byte = packet[i];
if (byte > 31 && byte < 127)
{
printf("%c", byte);
payload[j++] = byte;
continue;// add this
}
else
{
payload[j]='\0';
if(strstr(payload, blacklisted) != NULL)
{
printf("Found match : %d \n",blacklistedCount ++);
}
j=0;//again make it 0
}
}
}

根据您的要求进行修改。

关于c - 在数组中查找子字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231633/

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