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

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

 

C 언어 코딩 도장: 41.2 문자열 비교하기

strcmp 함수를 사용하면 두 문자열이 같은지 비교할 수 있으며 함수 이름은 문자열을 비교하다(string compare)에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다). strcmp(문자열1, 문자열2); int strc

dojang.io

m.blog.naver.com/tipsware/221261284797

 

[Q&A] scanf_s 함수로 공백까지 포함해서 입력받고 싶습니다.

: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. 질문 scanf 함수나 scanf_s 함...

blog.naver.com

m.blog.naver.com/tipsware/221415178947

 

strncmp 함수에 대하여

: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 이 글은 아래에 링크한 strcmp 함...

blog.naver.com

blog.naver.com/tipsware/221016574788

 

strcmp 함수에 대하여

C 언어 관련 전체 목차 : http://blog.naver.com/tipsware/2210108319691. strcmp이 함수의 이름인 strcmp...

blog.naver.com