생선이의 잡다한 블로그

C언어 강좌 24 - 문자열을 비교해보자! strcmp strncmp string.h 본문

프로그래밍/C언어 강좌

C언어 강좌 24 - 문자열을 비교해보자! strcmp strncmp string.h

생선스프 2017. 12. 6. 20:30
반응형

안녕하세요 생선스프입니다!


이번에는 문자열을 비교하는 법을 알아보려고 합니다


그냥 (문자열1 == 문자열2) 이렇게 비교하면 될거라고 생각하실 수 있습니다


한번 직접 해보죠


아래와 같이 코드를 입력해 보겠습니다.

1
2
3
4
5
6
7
8
#include <stdio.h>
void main()
{
    char s1[] = "HELLO";
    char s2[] = "HELLO";
 
    s1 == s2 ? puts("두 값이 일치합니다") : puts("두 값이 일치하지 않습니다");
}

cs


실행을 시켜보면 "두 값이 일치하지 않습니다" 가 나오게 됩니다


그 이유는 s1 과 s2 에는 이 문자열이 저장되있는 주소가 저장되어 있기 때문입니다.

즉 s1 과 s2 는 서로 다른 변수이기 때문에 다른 주소값을 가지고 있어 일치하지 않게 됩니다.


그래서 string.h 파일에 있는 함수인 strcmpstrncmp 를 이용하여 비교합니다.


우선 strcmp를 먼저 알아보겠습니다.


strcmp는 strcmp(문자열1, 문자열2) 이렇게 사용하며

두 값이 일치하면 0을 반환

앞의 값이 더 크면 양수 반환

뒤의 값이 더 크면 음수 반환



아래와 같이 코드를 입력해 보겠습니다.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <string.h>
 
void main()
{
    char s1[] = "HELLO";
    char s2[] = "HELLO";
 
    !strcmp(s1,s2) ? puts("두 값이 일치합니다") : puts("두 값이 일치하지 않습니다");
}

cs


이렇게 하고 실행을 시켜보면 드디어 "두 값이 일치합니다" 가 출력됩니다


다음은 strncmp 입니다.

strcmp와 다른점은 strncmp는 비교할 길이만큼 비교를 합니다.


strncmp는 strncmp(문자열1, 문자열2, 비교할길이) 이렇게 사용합니다


아래와 같이 코드를 입력해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
 
void main()
{
    char s1[] = "ABCDDD";
    char s2[] = "ABCEEE";
 
    !strncmp(s1,s2,3) ? puts("두 값의 앞의 세 자리가 일치합니다") : 
        puts("두 값의 앞의 세 자리가 일치하지 않습니다");
}

cs


이렇게 하면 앞의 세 자리 글자는 ABC 로 동일하므로 일치하다고 출력이 나오게 됩니다.


그럼 이상으로 강좌 마치도록 하겠습니다.


공감과 댓글은 생선에게 힘이됩니다!

더 많은 C언어 강좌

반응형
Comments