Jiyong's STUDY
strcmp, strncmp 설명, 비교 본문
문자열을 비교하는 함수 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 함수가 크고 작음을 비교하는 기준은 아스키코드 값이다.
즉, 사전편찬순서를 기준으로 뒤에 있으면 큰 문자열이라고 생각하면 된다.
'프로그래밍 > C' 카테고리의 다른 글
2차원 배열 이상의 포인터형과 배열 포인터와 포인터 배열 (0) | 2018.05.15 |
---|---|
문자열을 정수로 변환하는 함수들 (0) | 2018.05.15 |
strcat, strncat 설명, 비교 (0) | 2018.05.15 |
strcpy strncpy 설명, 비교 (0) | 2018.05.14 |
scanf gets fgets 문자열 입력 비교 (0) | 2018.03.19 |