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 |
Tags
- linux
- do it c
- 핵심 요약
- 유료강좌
- C++
- 미가공
- C
- Tipsware
- 별찍기 기초
- MyTread
- ListBox
- tips강좌
- 정처기 독학
- mysql
- 도움말
- 충무창업큐브
- win32
- MFC
- 별찍기
- 정보처리기사
- 김성엽
- 실습
- Time
- 포트폴리오
- SSG
- MFC 예제
- 마이크로소프트
- MyThread
- mfc 실습
- C언어
Archives
- Today
- Total
History
strlen 함수에 대하여 본문
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
반응형
'C,C++ > 개념 실습 프로그래밍' 카테고리의 다른 글
[C언어] 텍스트 파일의 내용 출력하기 (0) | 2023.04.26 |
---|---|
[C언어] 중복 값 없는 max 데이터 찾기 (0) | 2023.04.09 |
[C++]BOOL과 bool 자료형의 차이점 (0) | 2023.01.25 |
[c언어][파일 입출력] 텍스트 파일과 바이너리 파일 (0) | 2023.01.18 |
[C언어] strcmp 함수(문자열 비교)에 대하여 (0) | 2023.01.14 |
Comments