2013-01-18 3 views
5

는 C/C++ strncmp 서명이있는 경우 strncmp의 반환 값이 다음과 같이 무엇 :C/C++ 크기가 0

int strncmp (const char * str1, const char * str2, size_t num); 

내 질문 납입이 0이면 반환 값은 무엇인가? 표준이 어떻게 말하는가? 일부 온라인 문서에서 답을 찾을 수 없습니다.

감사합니다. 그것은 따라서, 아무도 비교하지 차이를 발견하지 num == 0 너무

+0

이 0이어야한다을 반환, 두 문자열에서 가장 num 문자에 비교 문자열의 크기가 다른 것보다 크거나 작아야합니다. –

+0

언제든지 [시도해보고 볼 수 있습니다] (http://ideone.com/4e4frw). – ellotheth

답변

6

음, strncmp 하나있는 방법이 없기 때문에, 따라서 그것은 논리적으로 0

+0

하지만 그건 말이되지 않습니다. 0을 반환하면 두 문자열이 동일 함을 의미합니다. 실제로는 없습니다. 그것이 표준이 말하는 경우, 나는 표준의 버그라고 생각합니다. 0 또는 1을 반환하는 것이 무엇이든 그것이 합리적인 가치가 아니라고 생각합니다. –

+3

@nowgainsnowpains : 0 문자를 포함하는 문자열은 0 문자를 포함하는 다른 문자열과 동일합니다. –

+3

@nowgainsnowpains'strcmp'에서 0을 반환해도 문자열이 동일하다는 것을 의미하지만, 이것은'strncmp'에 대해 유지되지 않습니다. 이 함수의 경우, 0을 반환하면 첫 번째 'n'문자의 부분 문자열이 동일 함을 의미합니다. 'n'에 대한 0을 전달하는 것은 사실상 서로 동일한 두 개의 빈 문자열을 비교하는 것을 의미합니다. – dasblinkenlight