관리 메뉴

History

strlen 함수에 대하여 본문

C,C++/개념 실습 프로그래밍

strlen 함수에 대하여

luckybee 2023. 3. 19. 16:25
728x90
반응형

1. strlen

 

strlen은 사용자가 매개변수로 전달한 문자열의 길이를 구해주는 함수이다.

 

여기서 문자열의 길이라고 하는 것은 문자열을 구성하는 문자의 개수를 의미하며 NULL 문자를 제외한 개수이다.

 

예를 들어 "asd"라는 문자열이 있으면 strlen함수로 표현한 문자열 길이는 3이다.  그러나  자료형의 크기를 표현하는 sizeof 함수를 사용하여 asd가 들어간 문자열 배열의 크기를 비교하면 4가 나올 것이다. 문자열의 크기는 NULL값을 포함한 값을 표현하기 때문이다.

 

 

먼저 strlen 함수의 원형은 아래와 같다.

size_t strlen(const char*str); //strlen의 원형

이 함수는 한 개의 매개변수를 가지며 이 매개변수로 전달된 문자열의 길이를 구해서 반환해 준다. 

 

 

2. strlen 함수를 사용한 예제

 

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

int main()
{
   char *p1="asdasd";
   char *p2="asd\t\rasd";
   
   int len1=strlen(p1);
   int len2=strlen(p2);
   
   printf("p1:%s p1_len:%d\np2:%s" p2_len:%d,p1,len1,p2,len2);

}

위와 같은 코드를 작성하였다. p1은 단순하게 눈으로 보더라도 \0값을 제외한 길이를 확인했을 때 6이 출력이 된다.

그렇다면 p2는 len값이 어떻게 나올까? 

 

\r, \t, \n과 같은 제어 문자는 모두 1개의 문자로 처리되기 때문에 p2의 문자열 개수는 8이 출력된다.

 

즉 화면에 출력되는 길이와  상관없이 문자열을 구성하는 문자의 개수로만 판단해서 길이를 구해준다.

 

3. NULL문자를 포함하지 않는 문자열을 strlen 함수에 넣으면?

 

strlen 함수는 NULL문자가 나올 때까지 1씩 주소를 증가시키면서 문자를 비교해 나간다. 결국 NULL문자를 포함하지 않는 문자열이 인자로 넘어오게 되면 쓰레기 값까지 문자 개수를 계산하게 된다.

728x90
반응형
Comments