strcmp 함수
- 문자열 비교(string compare)
- string.h 헤더 파일에 선언
- strcmp(문자열1, 문자열2)
strncmp 함수
- 길이를 지정해서 두 문자열을 비교하는 함수
- string.h 헤더 파일에 선언
- strncmp(문자열1, 문자열2, 비교할 길이)
#include <stdio.h>
#include <string.h> // strcmp 함수가 선언된 헤더 파일
int main()
{
char s1[10] = "Hello";
char *s2 = "Hello";
int ret = strcmp(s1, s2); // 두 문자열이 같은지 문자열 비교
printf("%d\n", ret); // 0: 두 문자열이 같으면 0
return 0;
}
실행결과
-1 : ASCII 코드 기준으로 문자열2가 클 때
0 : ASCII 코드 기준으로 두 문자열이 같을 때
1 : ASCII 코드 기준으로 문자열1이 클 때
※ 배열 형태의 문자열, 문자열 포인터 등 문자열의 저장 방식은 문자열 비교에 영향을 주지 않음
#include <stdio.h>
#include <string.h> // strcmp 함수가 선언된 헤더 파일
int main()
{
// aaa는 ASCII 코드로 97 97 97
// aab는 ASCII 코드로 97 97 98
// aac는 ASCII 코드로 97 97 99
printf("%d\n", strcmp("aaa", "aaa")); // 0: aaa와 aaa는 같으므로 0
printf("%d\n", strcmp("aab", "aaa")); // 1: aab와 aaa 중에서 aab가 크므로 1
printf("%d\n", strcmp("aab", "aac")); // -1: aab와 aac 중에서 aac가 크므로 -1
return 0;
}
사용자가 입력한 두 문자열 비교
#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strcmp 함수가 선언된 헤더 파일
int main()
{
char s1[20];
char s2[20];
printf("문자열 두 개를 입력하세요: ");
scanf("%s %s", s1, s2);
int ret = strcmp(s1, s2); // 입력된 문자열 비교
switch (ret)
{
case 0:
printf("두 문자열이 같음\n");
break;
case 1:
printf("%s보다 %s가 큼\n", s2, s1);
break;
case -1:
printf("%s보다 %s가 큼\n", s1, s2);
break;
}
return 0;
}
※ scanf 함수를 이용하여 공백으로 구분된 문자열을 입력받은 뒤 배열에 저장
실행결과
strcmp 함수 VS strncmp 함수
#include <stdio.h>
#include <string.h>
main() {
const char*p_src = "tipsware", *p_find = "tipssoft";
printf("%s 문자열과 %s 문자열은 ", p_src, p_find);
if (strcmp(p_src, p_find) == 0)
printf("동일합니다.\n");
else
printf("서로 다릅니다.\n");
printf("%s 문자열과 %s 문자열은 ", p_src, p_find);
if (strncmp(p_src, p_find, 4) == 0)
printf("앞 4개의 문자가 동일합니다.\n");
else
printf("앞 4개의 문자가 서로 다릅니다.\n");
}
실행결과
References
dojang.io/mod/page/view.php?id=346
m.blog.naver.com/tipsware/221261284797
m.blog.naver.com/tipsware/221415178947
blog.naver.com/tipsware/221016574788