-4
我有一个包含多个HTTP头的字符。 现在我要拆分的标题和每个标题存储到一个char []数组,像将字符串拆分为几个子字符串C
myheader[0] = "POST /index001.html HTTP/1.1\r\nHost:xxx ...";
myheader[1] = "POST /index002.html HTTP/1.1\r\nHost:xxx ..."
每个头部的尺寸是不同的,所以我不能指望字节。我不知道该怎么做。 strstr()只能找到第一个子字符串。
缓冲区格式是这样的:
POST /index001.html HTTP/1.1
Host: xxx
...
POST /index002.html HTTP/1.1
Host: xxx
...
POST /index003.html HTTP/1.1
Host: xxx
...
谁能帮助我的代码PLZ?
编辑:
我写了一个函数,从缓冲区中提取一个子串。但它只能处理第一对“POST”。 例如,
GetInBetween(“1234www567890rrr777wwwOUEJF99rrr”,“www”,“rrr”)只能获得“567890”。
char * GetInBetween(char* buffer, char* start, char* end)
{
char * subbuffer = NULL;
subbuffer = strstr(buffer, startpoint);
int betweenLen = 0;
if (subbuffer == NULL)
{
return NULL;
}
betweenLen = strcspn(subbuffer, endpoint);
int sbLen=0;
sbLen= strlen(subbuffer);
int spLen =0;
spLen = strlen(startpoint);
int dataLen =0;
dataLen = betweenLen - spLen;
char databuffer[1024];
for (int i =0; i< dataLen; i++)
{
databuffer[0+i] = subbuffer[4+i];
}
databuffer[dataLen] ='\0';
int test = strlen(databuffer);
return databuffer;
}
你试了一下,为什么它没有工作? – moffeltje
让问题更清楚 – Sunny
我曾经写过一个分割函数'GetInBetween(char * buffer,char * start,char * end)'。我用'strstr()''strcspn()'。但是这个函数只能处理第一对“POST”。我不知道如何处理第三和第四等。 –