strlen 문자열 길이


strlen 문자열 길이


이번에는 strlen 문자열 길이 알아내는 법을 알아보겠다.

strlen 함수를 쓰기 위해서는 string.h 파일을 include 해야 된다.

이 함수 사용법을 알아보자.


1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
int main()
{
    char array1[] = "Hello C";
    char array2[] = "안녕하세요";
    printf("영문 문자열의 길이 : %d \n", strlen(array1));
    printf("한글 문자열의 길이 : %d \n", strlen(array2));
 
    return 0;
}
cs

< 출력 >
영문 문자열의 길이 : 7
한글 문자열의 길이 : 10

string.h 헤더 파일을 include 해주고 각 변수에는 데이터가 들어가 있다.
printf로 strlen(array1)을 넣어서 문자열의 길이를 알려준다.
영문자는 한 글자에 1바이트이고 한글은 한 글자에 2바이트이다. 사용법은 간단하다.

그럼 strlen 함수가 어떻게 동작하는지 함수의 원형을 알아보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
size_t strlen_my(const char* s)
{
    unsigned int count = 0;
    while (*s)
        s++, count++;
    return count;
}
int main()
{
    char array1[] = "Hello C";
    char array2[] = "안녕하세요";
    printf("영문 문자열의 길이 : %d \n", strlen_my(array1));
    printf("한글 문자열의 길이 : %d \n", strlen_my(array2));
 
    return 0;
}
cs

< 출력 >
영문 문장열의 길이 : 7
한글 문자열의 길이 : 10

함수의 원형을 보면 size_t 함수의 반환형이라고 적혀있다.
size_t는 unsigned int를 typedf를 해서 size_t라고 설정을 해놨다.
다시 말해 typedf unsigned int size_t라고 정의를 내린 것이다.

그리고 매개변수에는 const char* s이다 값이 변경되지 않게끔 const 키워드로 정의를 내려줬다.
그다음 반복문을 돌려서 s 변수가 '\0'를 만날 때까지 반복문을 돌리게 해놨다.
s++로 한 바이트씩 이동을 한다. 이동할 때마다 count++을 해줌으로써 글자 수가 몇 개인지 알려주고 반환을 해준다.

댓글

Designed by JB FACTORY