2014-11-24 106 views
0

我遇到了一個問題,我試圖通過Web代理的回車拆分HTTP請求。請求似乎沒有分裂。由回車C拆分字符串C

下面是一個例子請求: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

你似乎認爲這是在其他語言split'的'C的變體;不是這樣。 'strtok'掃描參數字符串中的*任何*字符。 – usr2564301 2014-11-24 09:49:03

回答

2

你這樣做嗎?

#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 
+0

這顯然不是C.傾向於downvote,除了你的字符串處理是正確的。 – usr2564301 2014-11-24 09:51:57

+2

我忽略了頭文件iostream和cstring。現在編輯它。 – Jagannath 2014-11-24 09:53:42

1

檢查下面的鏈接:

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; 
}