30. wcslen 코드 직접 짜기

P4·2023년 6월 15일
0
post-thumbnail

wcslen 함수 직접 만들어보기

자작

#include <stdio.h>

unsigned int GetLength(const wchar_t* _pstr);
/* const wchar_t* _pstr은 값 자체
wchar_t* const_pstr은 포인터 변수 자체 */

int main(void)
{
	wchar_t NAME[10] = L"한글한글";

	int iLen = GetLength(NAME);

	printf("%d", iLen);

	return 0;
}

unsigned int GetLength(const wchar_t* _pstr)
{
	int i = 0;
	int a = 1;

	while (a != 0)
	{
		a = _pstr[i];
		i++;
	}
	
	return i - 1;

}

해답

#include <stdio.h>

unsigned int GetLength(const wchar_t* _pstr);
/* const wchar_t* _pstr은 값 자체
wchar_t* const_pstr은 포인터 변수 자체 */

int main(void)
{
	wchar_t NAME[10] = L"한글한글";

	int iLen = GetLength(NAME);

	printf("%d", iLen);

	return 0;
}

unsigned int GetLength(const wchar_t* _pstr)
{
	int i = 0;

	while (true)
	{
		wchar_t c = *(_pstr + i);

		if ('\0' == c)
		{
			// break쓰고 마지막에 return i; 해도 가능
			return i;
		}

    /* 더 간단하게 가면
    while ('\0' != _pstr[i])
    {
        ++i;
    }

    return i;
    */

    // 근데 의도를 파악하기 힘들수 있으므로 무조건 짧다고 좋은게 아님

		++i;
	}

}
  • c == '\0'`이 아니라 '\0' == c로 쓰는 이유는 앞에 상수가 있어야 만약 == 대신 = 를 쓰는 오류가 나와도 컴파일 단계에서 찾을 수 있기 때문

  • 왼쪽에 r-value를 쓰는 습관을 들이면 좋다!


문자열 이어붙이기

  • #include <wchar.h> 안의 wcscat_s() 함수 <-- 이것도 함수가 인자로 뭘 받는지 파악하면서 쓰면 됨
profile
지식을 담습니다.

0개의 댓글