안녕하세요. BlockDMask 입니다.
오늘은 char*, char [] 타입의 문자열 길이에 대해서 이야기 해보려 합니다.
즉. C언어 스타일 문자열의 길이를 구하는 함수에 대해서 알아보려합니다.
> C언어 문자열 관련 함수들 포스팅
C언어 문자열 이어붙이기 strcat [바로가기]
C언어 문자 입출력 함수 getchar, putchar [바로가기]
C언어 문자열 입출력 함수 puts, gets [바로가기]
C언어 문자열 복사 strcpy, strncpy [바로가기]
<목차>
1. strlen 함수에 대해서.
2. strlen 함수 사용 예시.
1. strlen 함수에 대해서.
▶ 헤더파일
C언어 : <string.h>
C++ : <cstring>
▶ 함수원형
size_t strlen(const char* str);
const char* 타입의 문자열을 받아서 해당 문자열의 길이를 반환하는 함수입니다.
반환 할때 보이는 size_t 타입은 객체나 값이 포함 할수 있는 최대 크기의 데이터를 표현하는 데이터 타입 입니다.
보통은 "unsigned 정수타입"으로 알고 계셔도 됩니다.
이것은 32bit 컴퓨터인지 64bit 컴퓨터인지에 따라 다릅니다. 보통 사용할때는 int로 형변환을 해서 많이 사용하기도 합니다.
사족이 길었네요.
아무튼. strlen 함수는 C언어 스타일의 문자열을 받아서 그것의 길이를 반환하는 함수인데요.
C언어 스타일의 문자열. 즉 char* str = "BlockDMask"이 문자열의 끝에는 문자열의 끝을 알려주는 '\0' 문자가 포함 되어있는거 다들 아시죠?
strlen 함수의 원리는 char*가 가리키는 주소에서 부터 시작해서 '\0'이 문자가 나올때까지의 문자들의 개수를 이태리 장인처럼 하나하나 세서 최종 길이를 반환하는 그런 원리 입니다.
그렇기 때문에 문자열 중간에 '\0' 값을 슉 넣어버리면 strlen이 '\0'이걸 인지하고 그 길이 까지만 반환을 하게 됩니다.
▶ 간단예제
1. const char* 을 넘길때
const char* name = "BlockDMask";
strlen(name); //strlen의 반환값 : 10
2. char 배열을 넘길때
char arr[50] = "BlockDMask";
strlen(arr); //strlen의 반환값 : 10
3. 문자열 중간에 '\0'가 있을때
char arr[50] = "Block\0DMask";
strlen(arr); //strlen의 반환값 : 5
2. strlen 함수 사용 예시.
▶ 간단한 strlen 사용법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> #include <string.h> int main(void) { //1. 문자열 길이 기본 예제 const char* name = "BlockDMask"; printf("1. const char* name = \"BlockDMask\""); printf("\tlen : %d\n", (int)strlen(name)); //strlen(const char*) //2. 배열의 크기와 문자열의 길이는 다릅니다. char arr1[50] = "BlockDMask"; printf("2. char arr1[50] = \"BlockDMask\""); printf("\tlen : %d\n", (int)strlen(arr1)); //strlen(char arr[ ]) //3. 중간에 '\0'가 존재할때의 strlen의 반환 char arr2[100] = "Block\0DMask"; //배열의 크기와, 문자열의 길이는 다릅니다.22 printf("3. char arr2[100] = \"Block\\0DMask\""); printf("\tlen : %d\n", (int)strlen(arr2)); //strlen(char arr[ ]) return 0; } | cs |
▶ 결과
1,2번은 strlen 기본 사용법 입니다.
3번같은경우 문자열 중간에 '\0'가 있기 때문에 앞에서부터 strlen이 B l o c k 이렇게 읽다가 '\0' 만나서 "아 문자열 끝이구나"하고 반환을 해버리기 때문에 5가 나오게 됩니다.
네 이상으로, C/C++ 문자열 길이를 구하는 strlen 함수에 대한 포스팅을 마치겠습니다. 감사합니다.
'<개인공부> > [C언어, C++]' 카테고리의 다른 글
[C언어/C++] 파일 입출력 fopen, fclose 함수에 대해서 (1) | 2020.06.12 |
---|---|
[C언어/C++] strtok 함수(문자열 자르기)에 대해서. (14) | 2020.03.31 |
[C언어/C++] strcmp, strncmp 함수(문자열 비교)에 대해서 (13) | 2020.01.02 |
[C언어/C++] strchr 함수(문자 검색)에 대해서 (3) | 2019.12.31 |
[C언어/C++] isdigit (숫자를 판단하는 함수) (2) | 2019.11.12 |
[C언어/C++] strstr 문자열 탐색 함수에 대해서 (3) | 2019.06.04 |
[C언어/C++] strcat, strncat 문자열 연결 함수에 대해서 (5) | 2019.05.24 |
[C언어/C++] strcpy, strncpy 함수(문자열 복사)에 대해서 (21) | 2019.05.16 |