2013-08-26 2 views
2

나는 압축 된 unsigned char 알려진 크기의 배열이 있습니다. 압축 고려 때문에 나는 끝에 null-terminator를 저장하지 않습니다. 같은 형식의 다른 배열과 비교하고 싶습니다. 무엇을 이 최선의 방법일까요?null이 아닌 종료 문자 배열 비교

압축 된 배열을 새 배열에 복제하고 null 종결자를 추가 한 다음 strcmp()을 사용하여 비교할 것을 생각했습니다.

더 좋은 제안이 있으십니까? 당신이 배열의 크기를 알고 있기 때문에

+1

또는 단순히 배열을 반복하고 요소를 비교할 수 있습니다. –

+1

표준 메모리 비교 함수는 [memcmp] (http://www.cplusplus.com/reference/cstring/memcmp/)라고합니다. – usr2564301

답변

5

당신이 여기에 수동으로 문자열의 크기 (또는 비교할 문자의 수를) 줄 수 string.h

strncmp(str1, str2, size_of_your_string); 

에서 strncmp() 기능을 사용할 수 있습니다. 문자열이 NUL 문자로 끝나지 않으므로 strlen()은 문자열 길이를 얻지 못할 수 있습니다.

는 UPDATE :

은 ...

#include<stdio.h> 
#include<string.h> 
main() 
{ 

unsigned char str[]="gangadhar", str1[]="ganga"; 
if(!strncmp(str,str1,5)) 
printf("first five charcters of str and str1 are same\n"); 
else 
printf("Not same\n"); 

} 
+1

strncmp는 서명되지 않은 char 문자열에서도 작동합니까? @Gangadher –

+1

@DavidTzoor 예, 가능합니다. – verbose

+0

@DavidTzoor 네, 간단한 예제가 답변에 추가 된 것을 볼 수 있습니다. – Gangadhar

1

2 년 후 서명되지 않은 char 배열의 비교에 대한 코드를 볼 수 있지만,

나는 'memcmp는이'당신이 원하는 기능이라고 생각 'strncmp'가 압축 문자열 내에서 0 바이트를 찾으면 중지 될 수 있기 때문에 사용하십시오.