2

我遇到了一个问题,我试图通过回车来拆分 HTTP 请求以获取 Web 代理。该请求似乎没有拆分。

这是一个示例请求: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。

4

2 回答 2

7

你是这样做的吗?

#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
于 2014-11-24T05:31:07.883 回答
2

检查以下链接:

strtok() 如何将字符串拆分为 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;
}
于 2014-11-24T05:34:52.317 回答