gpt4 book ai didi

c - 从 C 字符串中提取 POST 参数

转载 作者:行者123 更新时间:2023-11-30 15:46:05 25 4
gpt4 key购买 nike

我有以下 C 字符串:

char teste[] = "POST /index.html HTTP/1.1\nHost: localhost:8000\nConnection: keep-alive\nContent-Length: 23\nCache-Control: max-age=0\nAccept: text/html,application/xhtml+x
ml,application/xml;q=0.9,*/*;q=0.8\n Origin: http://localhost:8000\nUser-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/
537.36\nContent-Type: application/x-www-form-urlencoded\nReferer: http://localhost:8000/index.html\nAccept-Encoding: gzip,deflate,sdch\nAccept-Language: pt-BR,pt;q=0.8,en-US;q=
0.6,en;q=0.4\n\nnome=thiago&idade=12313";

我需要提取 POST 参数,这发生在“\n\n”之后:

\n\nnome=thiago&idade=12313";

strtok 似乎卡在第一个 '\n' 上,所以我认为有更好的方法来做到这一点。到目前为止我的代码:

char *token = malloc(100);
char **value = malloc(100 * sizeof(char *));
char **key = malloc(100 * sizeof(char *));
int i;

for(i = 0; i < 100; i++)
{
value[i] = malloc(100);
key[i] = malloc(100);
}

/* This doesn't work */
token = strtok(teste, "\n\n");

关于如何解决这个问题有什么想法吗?谢谢!

最佳答案

您可以使用strstr()来定位参数的开头:

char *params = strstr(teste, "\n\n");
if (params != NULL) {
params += 2; // now points to first key
// ...
}

然后使用strtok()分隔params中的键值对。

备注: strtok_r()strtok() 的可重入版本,并且(至少在 OS X 上),strtok() 已被 strsep() 废弃。

关于c - 从 C 字符串中提取 POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623177/

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