strncmp 함수는 두개의 문자열을 일정한 길이 만큼 비교하는 함수 입니다.

 

#include <string>

int strncmp(const char *s1, const char *s2, size_t n);

 

s1과 s2를 비교하면서 n 개의 문자열까지 비교 합니다.

s1과 s2의 첫번째 주소 부터 s1에서 s2의 값을 빼 나갑니다.

값이 다르거나, n 이 될때까지.....

 

다른 값이 나오면 그 값을 즉시 되돌립니다.

 

strncmp("ab", "ac", 2);

 

이렇게 하면 리턴값은 1 이 됩니다.

 

strncmp("ab", "ad", 2);

 

이렇게 하면 리턴값은 2 가 됩니다.

 

s1과 s2 가 같다면 당연히 리턴 값은 당연히 0이 됩니다.

 

만약 s1 이 s2 보다 크다면 리턴 값은 0보다 작은 수가 됩니다.

 

 

이러한 내용은 memcmp 또한 strncmp 와 완전히 같습니다.

 

 

단지 strncmp 의 경우에는 s1과 s2가 모두 NULL 이 나오면 남은 카운트에 관계없이 0을 되돌립니다.

 

memcmp 는 s1과 s2의 변수에 모두 0 이 나오더라도  상관없이 서로 다른 값이 나오거나 n 개가 될때까지 비교를 계속 합니다.

 

strcmp 의 경우에는 strncmp 와 달리 비교를 진행 하면서 count를 하지 않습니다.

비교해야할 count가 없으니 서로 다른 값이 나오거나 두변수에서 0 이 될때까지 계속해서 비교를 합니다.

따라서 예상하지 못한 결과를 얻을 수 있습니다.

비교해야할 범위를 넘어 설 수 있다는 것입니다.

 

문자열을 비교 할 때에는 반드시 strncmp를 사용하여야 하며,

문자열이 아닌 경우에는 반드시 memcmp 를 사용하여 변수를 비교 하여야 예상하지 못했던 오류를 피해 갈 수 있습니다.