Coding & Programming/C, C++

[C언어/C++] strcmp(), strncmp() 함수 - ID/Password 문자열 비교 하기 예제

mainCodes 2021. 4. 23. 10:25

[C언어/C++] strcmp(), strncmp() 함수 예제 - ID/Password 문자열 비교 하기

 

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و

 

C언어에서 문자열은 일반적인 비교 연산자(==)로는 비교할 수 없으며 strcmp, strncmp와 같은 함수를 이용하여 문자열 이 같은지 비교를 해야 합니다. strcmp 함수는 매개변수 2개에 저장되어 있는 모든 문자열을 비교하고 strncmp 함수는 세 번째 매개변수 size_t count에 지정된 크기만큼 문자열을 비교합니다.

 

int strcmp( const char *string1, const char *string2 );

int strncmp( const char *string1, const char *string2, size_t count );

 

두 개 함수 모두 비교하고자 하는 문자열이 같은 경우 결과값으로 0을 리턴합니다. 아래 예제는 총 3개의 문자열 변수가 선언되어 있습니다. str_a와 str_b는 배열을 초기화하는 방법만 다른뿐 실제로 저장되어 있는 문자열은 동일합니다.

 

char str_a[50] = "Hello";
char str_b[20] = { 'H', 'e', 'l', 'l','o','\0' };
char str_c[50] = "Hello World";

 

예제를 통해 결과를 확인해 보았습니다.

 

■ strcmp(), strncmp() 함수 예제(Example):

 

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
32
33
34
35
36
37
38
39
40
41
42
43
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
#define DB_ID   "mainCodes"
#define DB_PASS "abcd1234"
 
int main()
{
    char str_a[50= "Hello";
    char str_b[20= { 'H''e''l''l','o','\0' };
    char str_c[50= "Hello World";
    char id[50], pass[50];
    int len = 5;
    int result;
 
    //전체 문자열 비교
    result = strcmp(str_a, str_b);
    if (result == 0)
        printf("문자열이 동일합니다.\n");
    else
        printf("문자열이 동일하지 않습니다.\n");
 
    //len 길이 만큼만 문자열을 비교
    if (strncmp(str_a, str_c, len) == 0)
        printf("%d바이트 비교결과 문자열이 동일합니다.\n", len);
    else
        printf("%d바이트 비교결과 문자열이 동일하지 않습니다.\n", len);
 
    //입력한 ID, 패스워드 비교
    printf("\n\nID를 입력하세요: ");
    scanf("%s", id);
 
    printf("패스워드를 입력하세요: ");
    scanf("%s", pass);
 
    if ( (strcmp(DB_ID, id) == 0&& (strcmp(DB_PASS, pass) == 0) )
        printf("\n입력한 ID와 패스워드가 정확합니다.\n");
    else
        printf("\n입력한 ID와 패스워드가 틀립니다. 다시 입력해 주세요.\n");
 
    return 0;
}
cs

 

실행결과(Output):

 

실행결과 문자열 전체를 비교하는 strcmp(str_a, str_b)는 str_a와 str_b에 저장된 문자열이 동일한 것으로 결과가 나왔고 5바이트까지만 비교한 strncmp(str_a, str_c, 5) 또한 "Hello"까지만 문자열을 비교하기 때문에 동일한 것으로 결과를 리턴하였습니다.

 

지금까지 문자열 비교에 많이 사용되는 strcmp, strncmp 함수에 대한 포스팅이었습니다. 이상 JollyTree였습니다. (•̀ᴗ•́)و