Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 분당맛집
- CU 편의점 추천
- 순천디저트
- 교촌치킨 신메뉴
- 경주맛집
- CU편의점 추천
- 푸라닭
- 순천맛집
- 황리단길디저트
- 동성로맛집
- 용인맛집
- cu 편의점
- 편의점 신제품
- 서현역맛집
- 수지 술집
- 편의점 추천
- 서현 맛집
- 마켓컬리 추천
- 편스토랑
- 분당 맛집
- 황리단길기념품
- 황리단길맛집
- 대구동성로맛집
- 냉동만두 추천
- 치킨 신메뉴
- 오뚜기 라면
- BBQ 신메뉴
- 서현역중식
- CU편의점
- 수원 맛집
Archives
- Today
- Total
일상 메모장
strlen 사용법 및 구현 - C 문자열 처리 본문
설명
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 이 출력되게 됩니다.
'C 언어' 카테고리의 다른 글
memmove 사용법 및 구현 - C 메모리 이동 (11) | 2020.01.29 |
---|---|
strchr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.21 |
strcat 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.19 |
strcmp 사용법 및 구현 - C 문자열 처리 (5) | 2020.01.11 |
strstr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.10 |