strlen() 문자열 길이 확인하는 함수
#include <stdio.h>
#include <string.h>
int main()
{
char* string = "Hello";
int nLen = 0;
nLen = strlen(string);
printf("string = %s \n", string);
printf("nLen = %d \n", nLen);
return 0;
}
strlen() 함수의 인자로는 문자열 주소가 들어갑니다.
" "로 되어있는 것들을 문자열로 판단하는데요
문자열은 메모리에 문자열의 첫 번째 자리의 주솟값을 가지고 있습니다.
문자열 주소가 인자로 들어간다는 말은
문자열 배열이 될 수도 있고
포인터가 될 수도 있고
문자열 그 자체가 될 수도 있습니다.
// strlen() 인자 case //
char * string="hello";
char string1[] = { "hello" };
1. strlen(string); //포인터는 주소
2. strlen(string1); //배열이름은 문자의 시작주소
3. strlen("hello"); //문자열은 첫번째 자리의 시작주소
strlen() 함수 직접 구현해보기
알아봐야 할 것
1. 이 함수의 리턴 타입은?
2. 이 함수의 인자는 어떤 형태?
이 함수의 리턴 타입은 unsigned int형입니다.
(개수를 센다는) 기능을 살펴봤을 때 음수가 될 일은 없으까요
인자는 위에서 살펴봤듯이 문자열 주솟값이 들어갑니다.
그러면 기본 함수 형태는
unsigned int MyStrlen(char * string)
{
}
이렇게 된다고 생각해 볼 수 있겠네요
문자열 주소를 받아서 그 값에 들어가 있는 문자를 세어주면 될 것 같은데
이 문제는
배열/포인터 연산을 알고 있어야 합니다.
int MyStrlen(char * string)
{
int i=0;
while(*string) //string의 *역참조 연산자로 값을 확인하는데
{ // null문자가 오면 거짓이된다. 결국 널문자 까지 반복
string++; // 포인터 주소를 증가한다(자료형 크기만큼)
i++; //문자가 있으면 1씩 증가
}
return i;
}
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 문자열 처리 함수 (strcat() : 문자열 이어 붙이기) (0) | 2019.07.23 |
---|---|
C언어 문자열 처리 함수 (strcpy() :문자열 복사) (0) | 2019.07.23 |
C언어 메모리 동적 할당 (malloc) (0) | 2019.07.23 |
C언어 scanf()에 대하여 (0) | 2019.07.23 |
C언어 main 함수에게 인자 전달(argc, argv) (0) | 2019.07.23 |