strcmp(문자열1, 문자열2)
간단한 사용법과 강력한 효율을 가진 함수입니다.
입력값을 검사하는 과정에서 많이 활용할 수 있을것 같습니다.
문자열1과 문자열2를 비교한 뒤에 정수를 반환합니다. 맞습니다. 반환값이 int 자료형인 함수입니다.
완전히 같으면 0을 반환하는데
다를 경우 1 또는 -1이 반환되게 됩니다. 이는 문자열1과 문자열2를 비교해서 결정하는데요.
가나다순, 그러니까 영어로는 abc 순이겠네요. 알파벳 오름차순, 보통 학교 출석번호를 정할 때 오름차순으로 많이 정하죠?
출석번호순서대로 줄을 세운다고 칩시다. 이때
문자열1이 앞에있으면 -1이 반환되고 (먼저간다)
문자열2가 앞에 있으면 1이 반환됩니다. (나중에 간다)
이게 가능한 이유는 아스키코드가 a~z까지 오름차순으로 정렬되어있기 때문 아닐까 싶네요.
예제로 살펴 보겠습니다.
#include<stdio.h>
#include<string.h>
int main()
{
char str1[80] = "pear";
char str2[80] = "peach";
printf("사전에 나중에 나오는 과일 이름: ");
if (strcmp(str1, str2) > 0)
printf("%s\n", str1);
else
printf("%s\n", str2);
return 0;
}
(strcmp(str1, str2) > 0)
이 문장을 살펴 보겠습니다.
pear
peach
비교할 때 pea까지는 같죠?
r과 c에서 차이가 나는데
r보다는 c가 출석번호가 더 빠르겠지요.
문자열1보다 문자열2가 앞에 있는 형태 이니까 1이 반환 될겁니다.
그러면 저 if문과 else문 중에 if문에 해당되겠죠?
그래서 str1인 pear 가 출력 되는 형태인거죠.
strncmp함수는 기존의 strcpy, strcat 에서 strncpy, strncat 이 되면서 매개변수가 하나 늘어났던 것과 동일합니다.
정수 형태의 매개변수를 하나 더 받게 되는데 그건 글자수를 뜻합니다.
(strncmp(str1, str2, 3) 이렇게 표현 하면 3글자 까지 비교하겠다는 의미인겁니다.
반환값이 0이냐, 1이냐, -1 이냐는 기존 strcmp와 정확히 동일한 알고리즘 입니다.
'C언어 자습 > 혼자공부하는 C언어 (저자 서현우)' 카테고리의 다른 글
2차원 배열 (0) | 2023.04.24 |
---|---|
정적 지역 변수static, 레지스터 변수register (0) | 2023.04.24 |
문자열 연산 함수(2) strcat, strncat, strlen (0) | 2023.04.20 |
문자열 연산 함수 strcpy, strncpy (0) | 2023.04.20 |
gets 함수를 사용한 문자열 입력(gets, fgets) (0) | 2023.04.20 |