37 문자열의 길이를 구하고 비교하기

이번에는 문자열의 길이를 구하는 방법, 두 문자열이 같은지 비교하는 방법을 알아보겠습니다.

37.1 문자열 길이 구하기

문자열은 문자가 여러 개 모여있으므로 길이가 있습니다. 문자열의 길이는 strlen 함수로 구할 수 있으며 함수 이름은 문자열 길이(string length)에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다).

  • strlen(문자열포인터);
  • strlen(문자배열);
    • size_t strlen(const *_Str);
    • 문자열의 길이를 반환

다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

string_length.c

#include <stdio.h>
#include <string.h>    // strlen 함수가 선언된 헤더 파일

int main()
{
    char *s1 = "Hello";       // 포인터에 문자열 Hello의 주소 저장
    char s2[10] = "Hello";    // 크기가 10인 char형 배열을 선언하고 문자열 할당

    printf("%d\n", strlen(s1));    // 5: strlen 함수로 문자열의 길이를 구함
    printf("%d\n", strlen(s2));    // 5: strlen 함수로 문자열의 길이를 구함

    return 0;
}

실행 결과

5
5

strlen(s1)와 같이 strlen 함수에 문자열 포인터를 넣으면 문자열의 길이가 반환됩니다. 여기서는 Hello가 5글자이므로 5가 반환됩니다. 즉, strlen으로 문자열 길이를 구할 때는 순수하게 문자열의 길이만 구하며 NULL 부분은 포함하지 않습니다.

strlen(s2)와 같이 strlen 함수에 문자열이 들어있는 배열을 넣으면 배열 안에 들어있는 문자열의 길이가 반환됩니다. 마찬가지로 순수하게 문자열의 길이만 구하며 NULL 부분은 포함하지 않습니다. 특히 배열의 크기는 문자열의 길이와 전혀 상관이 없습니다. 배열의 크기가 크던 작던 문자열의 길이만 구합니다.

s2[10]이면 배열 크기가 10이라 strlen(s2)는 10이 될 것 같지만 실제로는 안에 들어있는 Hello가 5글자이므로 5가 반환됩니다.

그림 37‑1 strlen 함수로 문자열 길이 구하기