[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였습니다. (•̀ᴗ•́)و