2016-10-23 2 views
-3

CS50 문제를 해결하려고합니다. 이 함수에서는 특정 규칙과 일치하는지 확인하기 위해 한 줄을 반복합니다. "SP 요청 - 대상 SP HTTP 버전 CRLF"SP는 공백이며 CRLF는 캐리지 리턴/새 줄입니다.strchr()의 복수 문자 문자 상수 오류

//needle2 is a subset of the line, here it's the last bit: "HTTP-version CRLF" 
const char* needle3 = strchr(needle2, '\r\n'); 
if (needle3 == NULL) 
{ 
    error(400); 
    return false; 
} 

가이 코드를 컴파일 오류 메시지가 :

내가 CRLF 그것은 다음과 같은 방법으로 거기에 확인 찾을 문자열의 마지막 부분을 통과 오류 :

error: multi-character character constant [-Werror,-Wmultichar] 
const char* needle3 = strchr(needle2, '\r\n'); 

한 번에 한 문자 씩 가져와야하는 함수에서 여러 문자를 찾고 있음을 알고 있습니다. 그러나 CRLF를 사용하여 다중 문자 오류가 없는지 확인하려면 어떻게해야합니까?

strstr() 함수는 배포 코드에서 사용하는 것과 똑같은 방식으로 사용했지만 동일한 프로그램 내에서 작동하는 코드를 사용하기 때문에 오류가 발생했습니다.

+2

사용'strstr'을 위해 "\ r \ n"을'일정하지 멀티 문자가있다; 이 문자열을 문자열이라고합니다. –

+0

_ "문자열 상수"대신 _ "다중 문자 상수"_를 사용하는 kooky 접근법 _ – snr

+0

@PaulOgilvie, strstr()을 사용해 보았는데 '정수 비교에 호환되지 않는 포인터'오류가 발생합니다. EDIT : 이제 생각해 보면 구문을 엉망으로 만들었을 것입니다 ... 다시 확인해 보겠습니다! –

답변

0

폴 오길비 알 수 있듯이`와

//needle2 is a subset of the line, here it's the last bit: "HTTP-version CRLF" 
const char* needle3 = strstr(needle2, "\r\n"); 
if (needle3 == NULL) 
{ 
    error(400); 
    return false; 
} 
관련 문제