[C언어/C++] 문자열 길이 구하기 strlen 함수 사용법 & 예제 + 구현

strlen은 <string.h>의 헤더 파일 안에 있는 함수로써(c++일 경우 cstring) const char* 타입의 문자열을 받아서 해당 문자열의 길이를 반환하는 함수입니다. 여기서 문자열의 길이라고 하는 것은 문자열을 구성하는 문자의 개수를 의미하며 문자열 마지막에 붙어 있는 종료 NULL문자인 \0을 제외한 문자 개수입니다. (공백 포함)

 

문자열 길이

위와 같이 10의 크기를 가진 배열안에 있는 Hello라는 문자열은 5의 길이를 리턴하게 됩니다.

 

strlen 함수 형식

size_t strlen(const char *str);

인자값 : const char* 타입의 문자열

리턴값 : 문자열의 길이(양수)

 

※ size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 unsigned 형으로 나타냅니다.

 

strlen 함수 사용 예제

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

int main()
{
    char s1[10] = "Hello"; // 10크기 char배열에 Hello 할당
    char s2[10] = "He\0llo"; // 10크기 char배열에 He\0llo 할당
  
    //strlen 함수를 사용하여 문자열의 길이 구함
    printf("s1 문자열 길이 : %d\n", strlen(s1));
    printf("s2 문자열 길이 : %d\n", strlen(s2));

    return 0;
}

예제

strlen()은 위와 같이 사용하시면 되고 한 가지 주의할 점은 strlen() 함수는 종료 널 문자를 제외하고 string 길이를 판별하기에 문자열 중간에 \0가 있다면 문자열이 끝난줄 알고 함수를 종료해버려 정확한 문자열의 길이를 구할 수 없습니다.

 

strlen 함수 구현 (내부 구조)

#include <stdio.h>

//strlen 함수 구현
int my_strlen(char *arr){
  int cnt =0;
  int index = 0;
  
  while(1){
    if(arr[index]=='\0'){
      break;
    }else{
      cnt++;
    }
    index++;
  }
  
  return cnt;
}

int main() {

  //Please Enter Your Code Here
  char arr[100];
  scanf("%s",arr); //gets(myString);

  printf("문자열 길이 : %d",my_strlen(arr));

  return 0;
}

strlen() 함수를 구현해본다면 위와 같이 구현할 수 있을 것 같습니다. \0을 만나면 종료 그게 아니라면 cnt를 1씩 증가시켜 cnt를 1씩 증가시키는 방식입니다.

댓글

Designed by JB FACTORY