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 이 출력되게 됩니다.