Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[C언어 코딩 도장] Unit 41. 문자열의 길이를 구하고 비교하기 본문

C언어/C언어 코딩 도장

[C언어 코딩 도장] Unit 41. 문자열의 길이를 구하고 비교하기

개발새발 문타쿠 2023. 9. 25. 10:46

41.1 문자열 길이 구하기

문자열의 길이는 strlen 함수로 구할 수 있으며 string.h 헤더 파일에 선언되어 있다.

#include <stdio.h>
#include <string.h>

int main(void)
{
    char* s1 = "Hello";
    char s2[10] = "Hello";

    printf("%d\n", strlen(s1));
    printf("%d\n", strlen(s2));
       
    return 0;
}

문자열의 길이를 구할 때는 순수하게 문자열의 길이만 구하며 NULL 부분은 포함되지 않는다.


41.2 문자열 비교하기

두 문자열이 서로 같은지 비교하려면 strcmp 함수를 사용할 수 있으며 마찬가지로 string.h 헤더 파일에 선언되어 있다.

#include <stdio.h>
#include <string.h>

int main(void)
{
    char* s1 = "Hello";
    char s2[10] = "Hello";

    int ret = strcmp(s1, s2);   
    
    printf("%d\n", ret);        

    return 0;
}

#include <stdio.h>
#include <string.h>

int main(void)
{
    printf("%d\n", strcmp("aaa", "aaa"));        
    printf("%d\n", strcmp("aab", "aaa"));        
    printf("%d\n", strcmp("aab", "aac"));        

    return 0;
}

strcmp 함수에 비교할 문자열을 넣어주면 결과를 정수로 반환하며, 문자열을 비교할 때 대소문자를 구분한다.

  • 0: 아스키 코드를 기준으로  두 문자열이 같을 때
  • 1: 아스키 코드를 기준으로 왼쪽 문자열이 클 때
  • -1: 아스키 코드를 기준으로 오른쪽 문자열이 클 때

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main(void)
{
    char s1[20];
    char s2[20];

    printf("문자열을 두 개 입력하세요>> ");
    scanf("%s %s", s1, s2);
    printf("\n");

    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;
    default:
        break;
    }

    return 0;
}