Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 대구동성로맛집
- 치킨 신메뉴
- 황리단길디저트
- 순천디저트
- 경주맛집
- 편의점 추천
- cu 편의점
- 황리단길기념품
- 황리단길맛집
- 수지 술집
- 서현역맛집
- 동성로맛집
- 교촌치킨 신메뉴
- 분당맛집
- 오뚜기 라면
- 서현 맛집
- CU 편의점 추천
- 편스토랑
- 서현역중식
- CU편의점
- CU편의점 추천
- 냉동만두 추천
- 푸라닭
- 편의점 신제품
- BBQ 신메뉴
- 분당 맛집
- 수원 맛집
- 순천맛집
- 용인맛집
- 마켓컬리 추천
Archives
- Today
- Total
일상 메모장
strcmp 사용법 및 구현 - C 문자열 처리 본문
설명
두개의 문자열을 비교하는 함수입니다.
사용법
#include <string.h>
char *strcmp(const char *s1, const char *s2);
#include <string.h>
char *strncmp(const char *s1, const char *s2, size_t n);
정의
strcmp 함수는 s1과 s2 두 문자열을 비교합니다. 결과값이 0보다 크면 s1 이 s2보다 크고, 0보다 작으면 s2가 s1보다 큰것을 의미하고, 두 문자열이 같으면 0을 리턴합니다.
strncmp 함수도 비슷한데 n bytes 만큼만 s1과 s2를 비교합니다.
반환 값
strcmp()와 strncmp() 함수는 위에서 언급했듯이 두 문자열이 같으면 0을 리턴합니다.
s1이 s2보다 크면 양수을 리턴하고, s2가 s1보다 크면 음수를 리턴합니다.
strcmp 내부 구현 (strcmp 실제 구현부)
/**
* strcmp - Compare two strings
* @s1: One string
* @s2: Another string
*/
int strcmp(const char *s1, const char s2)
{
unsigned char c1, c2;
while (1) {
/* s1, s2 문자열에서 순서대로 한글자씩 가져옵니다. */
c1 = *s1++;
c2 = *s2++;
/* 한글자씩 비교하고 다르면 -1 또는 1 리턴합니다. */
if (c1 != c2)
return c1 < c2 ? -1 : 1;
if (!c1)
break;
}
/* 루프를 빠져나오면 두 문자열이 같다는 의미이므로 0을 리턴합니다. */
return 0;
}
unsigned char c1 과 c2 에 각각 s1의 첫번째 문자와 s2의 첫번째 문자를 대입합니다. 그럼 c1 = 't', c2 = 't' 입니다.
다음 루프는 c1 = 'e' c2 = 'e' 비교하고 계속해서 다음 문자를 비교해 나갑니다. 계속 문자가 같으면 널문자에 의해서 루프를 빠져나오고 0을 리턴합니다.
예제
#include <string.h>
#include <stdio.h>
int main()
{
char s1[] = "test";
char s2[] = "test";
int ret;
/* s1 문자열 "test" 와 s2 문자열 "test"를 비교합니다. */
ret = strstr(s1, s2);
/*
* s1, s2 두 문자열은 같으므로 ret 값은 0 입니다.
*/
printf("%d\n", ret);
return 0;
}
결과값은 s1, s2 문자열이 같으므로 0 이 출력됩니다.
'C 언어' 카테고리의 다른 글
memmove 사용법 및 구현 - C 메모리 이동 (11) | 2020.01.29 |
---|---|
strchr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.21 |
strcat 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.19 |
strstr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.10 |
strlen 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.08 |