본문 바로가기
c & c++/문자열

문자열 함수구현

by 일상코더 2022. 7. 25.
#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
#include <assert.h>

void strCat(wchar_t* origin, unsigned int n, const wchar_t* add);
unsigned int GetLength(const wchar_t* _szN);
int strCmpp(const wchar_t* a, const wchar_t* b);
int main(void)
{
	char szTest[10] = "abc한글";
	wchar_t szTestW[10] = L"abc한글";



		wchar_t szName[20] = L"Raimond";
		
		//문자열 문자 개수 세기 함수
		GetLength(szName);
		
		//문자열 이어 붙이기 함수
		strCat(szName, 20, L"abcedfg");
		
		//문자열 크기 비교 함수 만들기
		int c = strCmpp(L"ABC", L"abc");
		c; // -1


	return 0;
}

unsigned int GetLength(const wchar_t* _szN)
{
	int i = 0;
	while (true)
	{
		wchar_t c = _szN[i];
		if (c == '\0')
		{
			break;
		}
		i++;
	}
	return i;
}

void strCat(wchar_t* origin, unsigned int n, const wchar_t* add)
{
	//예외 처리
	int origin_L = GetLength(origin);
	int add_L = GetLength(add);
	if (n < origin_L + add_L + 1)
	{
		assert(nullptr);
	}

	origin_L;
	int i;
	for (i = 0; i < add_L; i++)
	{
		origin[origin_L + i] = add[i];
	}
}

int strCmpp(const wchar_t* _left, const wchar_t* _right)
{

	int leftLen = GetLength(_left);
	int rightLen = GetLength(_right);

	int iReturn = 0; //길이도 같고, 문자열값도 같으면 0리턴
	int iLoop = leftL;
	//문자열의 길이가 더길경우
	if (leftL < rightL)
	{
		iLoop = leftL;
		iReturn = -1;
	}
	else if (leftL > rightL)
	{
		iLoop = rightL;
		iReturn = 1;
	}
    //왼쪽, 오른쪽중 작은 부분 만큼 반복
	for (int i = 0; i < iLoop; i++)
	{
		if (a[i] < b[i])
		{
			return -1;
		}
		else if (a[i] > b[i])
		{
			return 1;
		}
	}
	return iReturn;
}

'c & c++ > 문자열' 카테고리의 다른 글

문자열 포인터2  (0) 2022.07.25
문자열 포인터1  (0) 2022.07.25
문자  (0) 2022.07.25

댓글