Jiyong's STUDY

strcmp, strncmp 설명, 비교 본문

프로그래밍/C

strcmp, strncmp 설명, 비교

Kingjiyong 2018. 5. 15. 17:38

문자열을 비교하는 함수 strcmp, strncmp


#include <string.h>

int strcmp(const char *s1, const char *s2);


int main(){

printf("%d, ", strcmp("abc", "abc");

printf("%d", strcmp("abc", "abcc");

}


결과 >> 0, -1


strcmp 함수는 인자로 전달된 두 문자열의 크기를 비교한다.

s1와 s2가 같은 경우에는 0을 반환한다.

s1이 더 크면 0보다 큰 값을 반환하며 s2가 더 크면 0보다 작은 값을 반환한다.

여기서 0보다 크거나 작은 값은 컴파일러마다 다른 값이 나오므로

그 값은 무슨 값인지 생각 할 필요가 없다.


단지 두 문자열이 같으면 0, 다르면 0이 아니라는 것만 알아도 충분하다.


#include <string.h>

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


int main(){

char str1[30]="AppleMint";

char str2[30]="Apple Candy";


if(!strncmp(str1, str2, 5))

puts("str1과 str2는 앞 5글자가 동일함. \n");

}


결과 >> str1과 str2는 앞 5글자가 동일함.


strncmp는 인자로 전달된 두 문자열의 크기를 비교하는데,

size_t n의 크기만큼 앞에서부터 잘라서 비교한다.

이 함수에서는 n의 크기가 5이므로

str1의 앞 5글자 Apple, str2의 앞 5글자 Apple이 같으므로

strncmp이 0을 반환했고,  not 연산자와 결합되어 if문이 참이 되어 puts함수가 호출되었다.



strcmp 함수와 strncmp 함수가 크고 작음을 비교하는 기준은 아스키코드 값이다.

즉, 사전편찬순서를 기준으로 뒤에 있으면 큰 문자열이라고 생각하면 된다.