#01. [문자열 비교하기] strcmp 함수, strncmp 함수

#01. [문자열 비교하기] strcmp 함수, strncmp 함수

strcmp 함수

문자열 비교(string compare)

string.h 헤더 파일에 선언

strcmp(문자열1, 문자열2)

strncmp 함수

길이를 지정해서 두 문자열을 비교하는 함수

string.h 헤더 파일에 선언

strncmp(문자열1, 문자열2, 비교할 길이)

#include #include // strcmp 함수가 선언된 헤더 파일 int main() { char s1[10] = "Hello"; char *s2 = "Hello"; int ret = strcmp(s1, s2); // 두 문자열이 같은지 문자열 비교 printf("%d

", ret); // 0: 두 문자열이 같으면 0 return 0; }

실행결과

-1 : ASCII 코드 기준으로 문자열2가 클 때

0 : ASCII 코드 기준으로 두 문자열이 같을 때

1 : ASCII 코드 기준으로 문자열1이 클 때

※ 배열 형태의 문자열, 문자열 포인터 등 문자열의 저장 방식은 문자열 비교에 영향을 주지 않음

#include #include // strcmp 함수가 선언된 헤더 파일 int main() { // aaa는 ASCII 코드로 97 97 97 // aab는 ASCII 코드로 97 97 98 // aac는 ASCII 코드로 97 97 99 printf("%d

", strcmp("aaa", "aaa")); // 0: aaa와 aaa는 같으므로 0 printf("%d

", strcmp("aab", "aaa")); // 1: aab와 aaa 중에서 aab가 크므로 1 printf("%d

", strcmp("aab", "aac")); // -1: aab와 aac 중에서 aac가 크므로 -1 return 0; }

사용자가 입력한 두 문자열 비교

#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지 #include #include // 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("두 문자열이 같음

"); break; case 1: printf("%s보다 %s가 큼

", s2, s1); break; case -1: printf("%s보다 %s가 큼

", s1, s2); break; } return 0; }

※ scanf 함수를 이용하여 공백으로 구분된 문자열을 입력받은 뒤 배열에 저장

실행결과

strcmp 함수 VS strncmp 함수

#include #include main() { const char*p_src = "tipsware", *p_find = "tipssoft"; printf("%s 문자열과 %s 문자열은 ", p_src, p_find); if (strcmp(p_src, p_find) == 0) printf("동일합니다.

"); else printf("서로 다릅니다.

"); printf("%s 문자열과 %s 문자열은 ", p_src, p_find); if (strncmp(p_src, p_find, 4) == 0) printf("앞 4개의 문자가 동일합니다.

"); else printf("앞 4개의 문자가 서로 다릅니다.

"); }

실행결과

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

from http://daily-life-in-20s.tistory.com/92 by ccl(A) rewrite - 2021-02-08 18:26:18