2014-12-04 11 views
0

안녕하세요, 제 서버 클라이언트 프로젝트에 문제가 있습니다. 나는 이되도록 ./server www.google.com 명령으로 내 프록시 서버를 실행합니다. 이 후 클라이언트를 실행하고 서버에 값 GET www.google.com을 보냅니다. 지금 서버 쪽에서 나는 buffer=GETstring1=www.google.com을 가지고 있으므로 (나는이 값 비싼 원인으로 인쇄 할 것입니다) strtok_r(buffer," ",&string1)을 사용합니다. 문제는 내가 사용하는 경우입니다C - 문자열의 문자열이 동일합니다 strcmp는 말하지 않습니다.

if((strcmp(string1,argv[1]) == 0)) 
     {  
      printf(" SAME VALUES \n"); 
     } 

나는이 두 변수가 같은 값을 가지지 않도록 printf를 얻지 못했습니다. 어떤 아이디어?

+3

이어야합니다 (16 진수 인쇄, 디버거 등). 아마도 일부 선행/후행 공백이나 개행이 남아있을 수 있습니다. –

+0

대부분의 경우 string1 끝에 공백이 있습니다. 트리밍을 고려하거나 개행시 중지되는 사용자 정의 비교 함수를 작성하십시오. – hyde

+0

문자열 1과 argv [1]의 값을 바이트로 인쇄하고 차이점을 확인하십시오. – nikitahils

답변

1

strtok_r(buffer," ",&string1)에서 string1은 발견 된 토큰에 대한 포인터가 아닙니다. string1을 비교하는 것처럼 보이지만 함수 반환 값은 토큰 포인터입니다. 따라서 코드는

char * tok = strtok_r(buffer," ",&string1); 
if ((strcmp (tok,argv[1]) == 0)) 
    {  
     printf(" SAME VALUES \n"); 
    } 
+0

이것이 맞습니다. 답을 좀 더 넓힐 것을 제안 해주십시오. 아마도, 다음과 같은 것을 추가하십시오 :'char * p;''char * tok;''tok = strtok_r (buffer, "", &p);'... –

+0

@Brad S. 감사합니다. 그러나 OP는 어떻게 든 그의 질문을 해결 한 것 같습니다. 내가 올바르게 추측 한 코드는 적절히 게시 된 코드뿐이었습니다. –