일상 메모장

strlen 사용법 및 구현 - C 문자열 처리 본문

C 언어

strlen 사용법 및 구현 - C 문자열 처리

핸드오버 2020. 1. 8. 10:00

설명

strlen 은 문자열의 길이를 계산합니다.

 

사용법

#include <string.h>

size_t strlen(const char *s);

정의

strlen 은 '\0' NULL 문자를 만날 때까지 문자열의 길이를 계산합니다.

 

반환 값

인자로 받은 s 문자열의 길이를 반환합니다.

 

strlen 내부 구현 (strlen 실제 구현부)

size_t strlen(const char *s)
{
	const char *sc;
    
	/*
	 * sc 를 s 시작 주소에 대입하여,
	 * '\0' NULL 문자를 만날때까지 sc를 증가시키며
	 * 루프를 돈다.
	 */
	for (sc = s; *sc != '\0'; ++sc)
		/* nothing */;
    
	/* NULL 문자열 pointer 에서 s 문자열 시작주소를 빼서 실제 길이를 리턴함 */
	return sc - s;
}

입력받은 문자열 s 의 주소 값이 0x0000 이라고 가정하고 문자열은 "abcd"라고 하면

루프를 돌다가 '*sc != '\0' 조건에 의해서 루프를 빠져나가게 되면 sc의 주소 값은 0x0004 가 됩니다.

그럼 return (sc - s); 의 값은 0x0004 (sc) - 0x0000 (s) = 4 가 리턴되게 됩니다.

0x0000 0x0001 0x0002 0x0003 0x0004
a b c d '\0'

 

예제

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

int main()
{
	char str[20] = "test strlen\0  abcd";  
	printf("%d\n", strlen(str));
}

결과값은 '\0' 만나기 전까지 문자열인 "test strlen" 의 길이인 11 이 출력되게 됩니다.