我遇到的问题是我试图通过Web代理的回车分割HTTP请求。请求似乎没有拆分。
以下是一个示例请求: GET /pub/WWW/TheProject.html HTTP / 1.1 \ r \ n主页:www.w3.org \ r \ n
我的尝试是:
char* split_request;
split_request = strtok(request, "\r\n");
但它永远不会分裂?我不确定我错过了什么。当我使用wget或浏览器测试Web代理时,它似乎分裂了,但是没有使用telnet。
答案 0 :(得分:6)
你这样做吗?
#include <stdio.h>
#include <string.h>
int main (void)
{
char str[] = "GET /pub/WWW/TheProject.html HTTP/1.1\r\nHost: www.w3.org\r\n";
char* pch = NULL;
pch = strtok(str, "\r\n");
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, "\r\n");
}
return 0;
}
<强>输出:强>
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
答案 1 :(得分:2)
检查以下链接:
How does strtok() split the string into tokens in C?
int main()
{
char request[20]="some\r\nstring";
char* split_request;
split_request = strtok(request,"\r\n");
while(split_request != NULL)
{
printf("%s\n",split_request);
split_request = strtok(NULL,"\r\n");
}
return 0;
}