2014-11-24 5 views
0

웹 프록시에 대한 캐리지 리턴으로 HTTP 요청을 분할하려고하는데 문제가 있습니다. 요청이 분할되지 않는 것 같습니다. 여기 캐리지 리턴 스플릿 문자열 C

는 예를 들어 요청입니다 : GET /pub/WWW/TheProject.html HTTP/1.1 \ 연구 \ nHost : www.w3.org \ 연구 \ n

내 시도는 다음과 같습니다

char* split_request; 
split_request = strtok(request, "\r\n"); 

하지만 결코 분할되지 않습니까? 나는 내가 무엇을 놓치고 있는지 확신하지 못한다. 웹 프록시를 테스트하기 위해 wget이나 브라우저를 사용할 때 분할되는 것처럼 보이지만 텔넷에서는 그렇지 않습니다.

+0

당신이 다른 언어로 split''의 C의 변형 가정하는 것; 그렇지 않습니다. 'strtok'는 인수 문자열에서 * 문자를 찾습니다. – usr2564301

답변

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

+2

나는 헤더 파일 iostream과 cstring을 간과했다. 지금 편집했습니다. – Jagannath

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